You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:17:24