Yii2中的Swiftmailer - 无法发送电子邮件

时间:2015-05-14 08:30:00

标签: yii2 swiftmailer

我使用基本的Yii2模板和Swiftmailer发送电子邮件..

以下是config/web.php的代码:

'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // 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'=>'false',
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.gmail.com',
                'username' => 'myemail@gmail.com',
                'password' => 'password',
                'port' => '587',
                'encryption' => 'tls',
            ],
        ],

我的控制器代码是:

$fname = Yii::$app->request->post('fname');
        $email = Yii::$app->request->post('email');

        $industry = Yii::$app->request->post('industry');
        $info = Yii::$app->request->post('info');

        $mail = Yii::$app->mailer->compose()
            ->setFrom('myemail@gmail.com')
            ->setTo($email)
            ->setSubject('Test mail')
            ->setTextBody($info)
            ->send();

我收到了电子邮件日志,但没有发送电子邮件......

感谢。

4 个答案:

答案 0 :(得分:1)

为了减少您的帐户漏洞,Google推出了此政策。当我们通过我们的帐户登录而不在Google上创建任何应用时,Google会征得我们的许可,以确保我们帐户的安全。

访问以下网址以解决此问题并选择" 开启" https://www.google.com/settings/security/lesssecureapps

答案 1 :(得分:0)

注意您将电子邮件compose()...->send()的结果分配给$ mail,这样您就不会发送电子邮件,而是将结果存储在此变量中。 尝试没有分配,如:

    $industry = Yii::$app->request->post('industry');
    $info = Yii::$app->request->post('info');

    Yii::$app->mailer->compose()
        ->setFrom('myemail@gmail.com')
        ->setTo($email)
        ->setSubject('Test mail')
        ->setTextBody($info)
        ->send();

还要注意

'useFileTransport'=>'false',

false我是PHP值,我认为你需要使用

 'useFileTransport'=>false,

清除'字符

答案 2 :(得分:0)

我遇到了同样的问题,我用port=>25来解决我的问题。

答案 3 :(得分:0)

scaisEdge是对的:

您设置了'useFileTransport'=>'false'。由于'false'是一个字符串,因此评估为(bool) true。您需要将其设置为'useFileTransport' => false

<强>此外:

如果你正在使用总是设置为string的AWS beanstalk环境变量之类的东西,你想要将它评估为true,如下所示:

'useFileTransport' => $_ENV['APP_STOPMAILER'] === "true" ? true : false,