Laravel使用cPanel域名邮箱发信无报错但Gmail收不到邮件求助
排查步骤
- 先清理Laravel配置缓存
很多时候修改.env后配置没有生效,执行命令php artisan config:clear清空缓存,再在路由中打印dd(config('mail'))确认邮件配置和你填写的内容完全一致,避免缓存导致的配置读取错误。 - 检查SMTP用户名填写是否完整
cPanel搭建的域名邮箱绝大多数要求SMTP用户名是完整的邮箱地址(即support@domain.com),不能只填前缀support。你可以核对下.env中的MAIL_USERNAME参数,很多用户PHPMailer配置时填了完整地址,Laravel配置时漏写域名,导致服务器静默拒绝发信没有报错。 - 确认队列是否正常运行
你的SendUserEmailVerification类引入了Queueable特质,如果你.env中的QUEUE_CONNECTION参数不是sync,邮件会被推入队列等待消费,未启动队列worker的情况下邮件不会实际发出。你可以先把QUEUE_CONNECTION临时改为sync测试,或者执行php artisan queue:work启动队列进程观察任务处理情况。 - 检查Gmail收件分类与拒收记录
没有报错的情况下大概率邮件已经发出,只是被Gmail归类到了「垃圾邮件」「促销」「社交」标签页,你可以在Gmail全局搜索发件地址support@domain.com确认是否被拦截。同时可以登录cPanel后台查看邮件发送日志,确认Gmail是否返回了拒收错误码,根据错误信息定位问题。 - 核对域名邮件解析记录
确认你的域名已经配置了正确的SPF、DKIM记录,没有这些域名验证记录的话,Gmail会直接拒收来自该域名的邮件,不会进入收件箱。这一步cPanel后台一般可以一键生成对应解析记录,添加到域名DNS后台即可生效。 - 备选配置测试
如果上述排查都没问题,可以尝试切换加密方式测试:把MAIL_PORT改为587,MAIL_ENCRYPTION改为tls,部分cPanel邮件服务器对ssl的465端口兼容性较差,切换tls协议即可正常发信。
内容的提问来源于stack exchange,提问作者Moxley
相关产品推荐
相关产品推荐

