我使用基本的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();
我收到了电子邮件日志,但没有发送电子邮件......
感谢。
答案 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,