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

Laravel无法向Gmail账户发送邮件的问题求助

Laravel 托管商SMTP无法发送邮件到Gmail的排查方案

同域邮箱能正常接收,Outlook客户端用该邮箱发Gmail也正常,说明邮箱本身和托管商SMTP服务没问题,问题出在Laravel的配置或邮件发送逻辑上,导致Gmail拒收或判定为垃圾邮件。

  • 修复SMTP端口与加密方式不匹配
    你的.env配置中存在端口和加密方式不兼容的问题:

    • 465端口对应的标准加密方式是ssl,而非tls(tls对应587端口)
    • 端口值不要加引号,避免解析异常

    修正后的.env配置片段:

    MAIL_MAILER=smtp
    MAIL_HOST=mail.domain.com
    MAIL_PORT=465
    MAIL_USERNAME="no_reply@domain.com"
    MAIL_PASSWORD="password"
    MAIL_ENCRYPTION=ssl
    MAIL_FROM_ADDRESS="no_reply@domain.com"
    MAIL_FROM_NAME="${APP_NAME}"
    

    或者改用587端口+tls:

    MAIL_PORT=587
    MAIL_ENCRYPTION=tls
    
  • 检查Laravel邮件发送日志
    查看Laravel的日志文件storage/logs/laravel.log,或者执行命令实时监控日志:

    php artisan log:watch
    

    日志里会显示SMTP连接状态、发送失败的具体原因(比如被Gmail拒绝、认证错误等)。

  • 优化邮件内容规避Gmail垃圾邮件检测
    Gmail的反垃圾规则很严格,检查以下几点:

    • 邮件主题避免使用敏感词(如"免费"、"促销"),不要为空或过于简短
    • 确保emails.get-started模板里有清晰的文本内容,不要仅包含图片或可疑链接
    • 发件人名称No Reply尽量和域名关联度更高,比如改成${APP_NAME} No Reply
  • 验证域名的SPF/DKIM/DMARC记录
    虽然Outlook能正常发送,但Laravel通过SMTP发送的邮件可能缺少域名认证,导致Gmail判定为垃圾邮件:

    • SPF记录:在域名DNS中添加包含托管商SMTP服务器IP的TXT记录,比如v=spf1 ip4:xxx.xxx.xxx.xxx include:your-host-provider.com ~all
    • DKIM签名:在托管商后台启用DKIM,将生成的公钥添加到域名DNS的TXT记录中,Laravel会自动使用DKIM签名(部分托管商需要额外配置)
    • DMARC记录:添加TXT记录v=DMARC1; p=none; sp=none; rua=mailto:dmarc@domain.com,提升邮件可信度
  • 清理重复的收件人设置
    你的代码中同时在控制器和Mailable类里设置了收件人,可能导致逻辑冲突:

    • 控制器代码修改为:
      Mail::send(new GetStartedMail($request));
      
    • 保留Mailable类中的->to()设置即可,避免重复定义收件人。

内容的提问来源于stack exchange,提问作者akif akram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 09:43:30