yii2中不接受用户名和密码

时间:2016-03-10 00:33:02

标签: php email yii gmail yii2

我在使用yii2时出错,我无法使用电子邮件帐户通过yii发送电子邮件。如果我的密码是正确的:( 这是我的代码:

web.php

'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'transport' => [
            'class'      => 'Swift_SmtpTransport',
            'host'       => 'smtp.gmail.com',
            'username'   => 'user@hya.com.mx',
            'password'   => 'passwd',
            'port'       => '587',
            'encryption' => 'tls',
            ],
        ],
        'log'

Controller.php这样

Yii::$app -> mailer -> compose()
          -> setFrom('users@hya.com.mx')
          -> setTo('jhon@hya.com.mx')
          -> setSubject('Test')
          -> setTextBody('Plain text content')
          -> setHtmlBody('It is a test')
          -> send();

This is my error

2 个答案:

答案 0 :(得分:1)

您好像使用的是Google SMTP服务器。 Google有一项新的安全检查,只允许您通过Google应用发送电子邮件。如果您使用任何其他,您将遇到此类错误。要解决此问题,您可以执行以下操作:

通过

使用默认的sendmail功能
 'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'useFileTransport' => false,
        ],

我发现第一个解决方案效率更高

更改Google设置以允许安全性较低的应用

点击此链接更改您的Gmail设置https://myaccount.google.com/security

答案 1 :(得分:0)

我使用以下配置并正确工作

实际上等于你的但有区别的用户名是谷歌邮件用户而不是noyt谷歌应用用户

    'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'viewPath' => '@common/mail',
        // send all mails to a file by default. You have to set
        // 'useFileTransport' to false and configure a transport
        // for the mailer to send real emails.
        //'useFileTransport' => true,
        'useFileTransport' => false,//set this property to false to send mails to real email addresses
        //comment the following array to send mail using php's mail function
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.gmail.com',
            'username' => 'myname@gmail.com',
            'password' => 'mypassword',
            'port' => '587',
            'encryption' => 'tls',
        ],
    ],

希望是有用的