Yii2使用Swift_SmtpTransport通过Gmail发送邮件失败求助
解决Yii2 SwiftMailer发送Gmail邮件的535认证错误问题
兄弟,我之前也踩过一模一样的Gmail SMTP认证坑,现在Google的安全政策早就变了,低安全应用权限已经彻底失效了,给你几个肯定能解决的步骤:
1. 放弃低安全应用权限,改用应用专用密码
Google在2022年就停用了低安全应用的权限设置,所以你开那个选项完全没用。现在要通过第三方客户端发Gmail,必须用应用专用密码,前提是你的Gmail账号已经开启了两步验证(2FA):
- 先去Google账号安全设置里开启两步验证;
- 开启后找到「应用专用密码」选项(一般在两步验证设置下方),生成一个专门用于邮件客户端的密码;
- 把Yii2配置里的
password字段替换成这个生成的应用密码,别再用你的普通Gmail密码了。
2. 确保发件人邮箱和SMTP认证邮箱一致
你现在的发送代码里setFrom用的是myEmail07@gmail.com,但配置里的SMTP认证账号是myEmail2131@gmail.com,Gmail默认不允许用未认证的邮箱作为发件人,要么:
- 把
setFrom改成和配置里username一致的myEmail2131@gmail.com; - 或者去Gmail设置里添加
myEmail07@gmail.com作为别名,完成邮箱验证后再用这个别名发件。
3. 确认SMTP配置的正确性
不管用TLS还是SSL,配置要对应准确:
TLS配置(推荐使用)
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' => false, // 必须设为false才会发送真实邮件 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.gmail.com', 'username' => 'myEmail2131@gmail.com', 'password' => '你的应用专用密码', 'port' => 587, 'encryption' => 'tls', ], ],
SSL配置
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' => false, 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.gmail.com', 'username' => 'myEmail2131@gmail.com', 'password' => '你的应用专用密码', 'port' => 465, 'encryption' => 'ssl', ], ],
4. 检查账号的安全拦截记录
如果以上步骤都做完还是报错,去你的Gmail账号里查看「最近的登录活动」,看看有没有来自Yii2服务器的登录请求被Google拦截了,点击「允许此登录」即可。
最后,调整你的发送代码,确保发件人和认证账号一致:
Yii::$app->mailer->compose() ->setFrom('myEmail2131@gmail.com') ->setTo('toSomeone@gmail.com') ->setSubject('Some Subject here') ->setTextBody('Plain text content') ->setHtmlBody("<p> This is the body of email</p>") ->send();
内容的提问来源于stack exchange,提问作者Aljay
相关产品推荐
相关产品推荐

