【问题标题】:How to send email using smtp in zf2? [closed]如何在 zf2 中使用 smtp 发送电子邮件? [关闭]
【发布时间】:2014-05-09 08:59:11
【问题描述】:

我做了一个 zf2 操作,我想向保存在数据库中的用户发送电子邮件,所以我使用 gmail 发送电子邮件但电子邮件未发送给用户。

我如何在 zf2 中发送电子邮件?

这是我的代码:

public function addAction()
{
    //check permissions
    if(!$this->acl->isAllowed($this->user->user_type, 'user.create'))
    $this->redirect()->toRoute('admin_index');
    //
    $this->layout()->top_heading = 'Add User';      
    $dm = $this->getServiceLocator()->get('doctrine.documentmanager.odm_default');
    ////////////////////////////////
    $form = new UserForm();
    $update=false;
    $message='';
    if($this->getRequest()->isPost())
    {
        $post = $this->getRequest()->getPost();
        $form->setInputFilter($form->getInputFilter());
        $form->setData($post);
        if($form->isValid())
        {
            $formData=$form->getData();
            $s = new User();
            $user = $dm->getRepository('Calendar\Document\User')->findOneBy(array(
                "username" => $formData['username']
            ));
            $email = $dm->getRepository('Calendar\Document\User')->findOneBy(array(
                "email" => $formData['email']
            ));
            if($user || $email)
            {
                $update=2;
                $message='User Already Exists.';    
            }
            if($post['role']=='admin')
            {
                $update=2;
                $message="Select Some Other Role."; 
            }
            else
            {
                $s->setProperty('username',$post['username']);
                $s->setProperty('password',md5($post['password']));
                $s->setProperty('email',$post['email']);
                $s->setProperty('user_type',$post['role']);
                $s->setProperty('dataentered',date('Y-m-d H:m:i'));
                $dm->persist($s);
                $dm->flush();
                //echo new Response($s->getProperty('id'));
                //
                $update=1;
                $message='User Added Successfully.';
                $form = new UserForm();
                $config = array('ssl' => 'tls',
                'auth' => 'login',
                'username' => 'marif252@gmail.com',
                'password' => 'password');

                $transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
                $mail = new Zend_Mail();
                $mail->setBodyHtml($bodytext);
                $mail->setFrom('marif252@gmail.com');
                $mail->addTo($formData['email'], $formData['username']);
                $mail->setSubject('Profile Activation');
                $mail->send($transport);

如何在 zf2 中使用 gmail 发送电子邮件?

【问题讨论】:

  • 我使用了这个,但没有发送电子邮件
  • 电子邮件根本不在您的收件箱中,还是您收到错误消息?你检查你的垃圾邮件文件夹了吗?你也检查了你的 php_error.log 吗?
  • 我检查了我的错误日志这个错误显示致命错误:类 'Calendar\\Controller\\Zend_Mail_Transport_Smtp' not found in
  • @MuhammadArif 您的代码仍然使用未经处理的帖子数据。使用 $post['foo'] 的任何内容都来自请求实例,并且只是原始发布数据 - 您需要在设置实体属性时使用 $formData['foo'],因为这将是 已验证数据通过InputFilter

标签: php email zend-framework2 smtp


【解决方案1】:

尝试像这样使用 smtp:

$message = new \Zend\Mail\Message();
$message->setBody('This is the body');
$message->setFrom('myemail@mydomain.com');
$message->addTo('someone@somedomain.com');
$message->setSubject('Test subject');

$smtpOptions = new \Zend\Mail\Transport\SmtpOptions();  
$smtpOptions->setHost('smtp.gmail.com')
            ->setConnectionClass('login')
            ->setName('smtp.gmail.com')
            ->setConnectionConfig(array(
                'username' => 'YOUR GMAIL ADDRESS',
                'password' => 'YOUR PASSWORD',
                'ssl' => 'tls',
            ));

$transport = new \Zend\Mail\Transport\Smtp($smtpOptions);
$transport->send($message);

【讨论】:

  • 但是我在哪里设置了 $post[email]?
  • 我使用了你的代码,但显示错误消息无法打开套接字
  • 你的服务器支持openssl吗?确保 extension=php_openssl.dll 在 php.ini 中未注释 ..如果是,则尝试注释 'ssl'=>'tls'
  • 我检查了我的 openssl 是否已启用,所以我评论 'ssl'=>'tls' 但同样的错误存在
  • 你能检查错误日志吗?如果你不能 - 那么请打电话给你的托管公司并告诉他们这个错误
猜你喜欢
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
  • 2014-11-12
  • 2021-12-28
相关资源
最近更新 更多