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

Laravel使用Mailgun SMTP发送邮件验证失败问题求助

我之前也碰到过类似的Mailgun SMTP认证坑,结合你的报错信息和配置,咱们一步步来排查解决:

问题排查与解决方案

1. 修正Mailgun SMTP核心凭证(最可能的根因)

你现在.env里填的MAIL_USERNAME=email@sub.domain.com是自己服务器创建的邮箱,但Mailgun的SMTP认证根本不需要用你自己搭建的邮箱账号——它需要的是Mailgun后台给你的专属SMTP凭证:

  • 登录Mailgun控制台,找到你配置的sub.domain.com域名;
  • 进入该域名的「SMTP Credentials」页面,复制官方给出的Username(一般是postmaster@sub.domain.com)和对应的Password;
  • 把.env里的MAIL_USERNAME和MAIL_PASSWORD替换成这两个值,别再用自己服务器的邮箱账号了。

2. 调整SMTP端口与加密方式

端口25很容易被服务器或运营商拦截,Mailgun官方推荐用更稳定的配置:

MAIL_PORT=587
MAIL_ENCRYPTION=tls

如果想用SSL加密,也可以这么配:

MAIL_PORT=465
MAIL_ENCRYPTION=ssl

别把MAIL_ENCRYPTION设为null,不安全的连接大概率会被Mailgun拒绝。

3. 清除Laravel配置缓存

修改.env后,Laravel经常会缓存旧配置,导致新设置不生效,执行这两条命令刷新:

php artisan config:clear
php artisan cache:clear

4. 确认Mailgun域名已完成验证

登录Mailgun后台,检查sub.domain.com的DNS状态:

  • 确认MX记录正确指向Mailgun的服务器;
  • 确认SPF、DKIM这两条TXT记录已经配置并生效;
    未完成验证的域名会被Mailgun限制发送,直接导致认证失败。

5. 排查本地邮件服务干扰

你的服务器日志里出现dovecot的认证错误有点反常——毕竟你配置的是Mailgun的SMTP服务器,理论上不该连接到本地的dovecot。可以做这几个检查:

  • 再核对一遍.env里的MAIL_HOST确实是smtp.mailgun.org,没被其他配置文件覆盖;
  • 检查服务器防火墙是否允许出站连接到smtp.mailgun.org的587/465端口;
  • 暂时关闭本地的dovecot服务,测试是否还会出现该日志,排除本地服务干扰的可能。

内容的提问来源于stack exchange,提问作者Hkm Sadek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:23:10