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

Laravel升级后使用Google Workspace SMTP中继发件报错求助

Laravel 9 升级后 Google Workspace SMTP 中继发邮件报错修复方案

问题背景

Laravel 8应用使用Google Workspace SMTP中继服务(IP地址认证)发邮件正常运行一年多,升级到Laravel 9后触发以下错误:

>>> Illuminate\Support\Facades\Mail::to('myemail@gmail.com')->send(new App\Mail\CourseEnrolmentEmail($user, App\Course::first()));

// 错误提示
Symfony\Component\Mailer\Exception\TransportException with message 'Expected response code "250" but got an empty response.'

当前配置信息:

config/mail.php SMTP配置段:

'smtp' => [
    'transport' => 'smtp',
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'timeout' => null,
],

.env 邮件环境变量:

MAIL_DRIVER=smtp
MAIL_HOST=smtp-relay.gmail.com
MAIL_PORT=587
MAIL_ENCRYPTION=TLS
MAIL_FROM_NAME="My Name"
MAIL_FROM_ADDRESS=myaddress@workspace.com

注:采用IP地址认证,未设置MAIL_USERNAME和MAIL_PASSWORD

已尝试无效操作:

  • 勾选Google Workspace路由配置中的TLS选项
  • 将允许发件人改为“仅我的域名中已注册应用的用户”
  • 参考多个公开方案未解决

修复步骤

1. 替换弃用的环境变量

Laravel 9已弃用MAIL_DRIVER,改用MAIL_MAILER,修改.env:

# 删除 MAIL_DRIVER=smtp
MAIL_MAILER=smtp

2. 明确禁用SMTP身份验证

由于使用IP认证,需在SMTP配置中显式关闭身份验证逻辑。修改config/mail.php的smtp配置段:

'smtp' => [
    'transport' => 'smtp',
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'timeout' => null,
    'auth' => env('MAIL_AUTH', false), // 添加该行强制关闭身份验证
],

同时在.env中添加:

MAIL_AUTH=false

3. 验证服务器IP权限

确认应用服务器的公网IP已添加到Google Workspace的SMTP中继允许列表:

  1. 登录Google Workspace管理后台
  2. 进入「应用 > Gmail > 路由」
  3. 找到对应SMTP中继规则,检查「仅接受来自以下IP地址的邮件」列表是否包含当前服务器IP

4. 网络连通性测试

使用telnet命令测试服务器与SMTP中继的连通性:

telnet smtp-relay.gmail.com 587

若返回220 smtp-relay.gmail.com ESMTP则网络正常,否则排查服务器防火墙/安全组是否放行587(或25)端口出站。

5. 调试与端口切换

开启Laravel邮件调试模式获取详细日志,修改.env:

MAIL_DEBUG=true

若587端口仍有问题,尝试切换到25端口(部分服务器对25端口限制更少):

MAIL_PORT=25

内容的提问来源于stack exchange,提问作者Lennox Omondi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:05:52