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

Laravel 8配置Mailgun+队列发邮件失败,求排查SSL连接错误

问题分析与解决方案

我来帮你排查这个邮件发送失败的问题,你遇到的ssl3_get_record:wrong version number错误,核心原因是邮件驱动配置不匹配,或者SMTP端口与加密方式不兼容。结合你的配置来看,主要有两个关键点需要修正:

1. 确认是否使用Mailgun API驱动(推荐方式)

你提到要使用Mailgun API发送邮件,但当前配置可能仍在默认使用SMTP驱动,没有切换到Mailgun API驱动:

  • 检查.env文件,确保设置默认邮件驱动为mailgun:
    MAIL_MAILER=mailgun
    
  • 使用Mailgun API驱动时,不需要设置MAIL_HOST、MAIL_PORT、MAIL_ENCRYPTION这些SMTP相关参数——因为API驱动直接调用Mailgun的HTTP接口,不走SMTP连接。你.env里保留的MAIL_PORT=2525和MAIL_ENCRYPTION=ssl,反而会在默认驱动为SMTP时干扰配置。

2. 如果坚持使用Mailgun SMTP驱动(不推荐API时)

如果你的需求是用Mailgun的SMTP服务而非API,那必须修正端口与加密方式的匹配:

  • Mailgun SMTP的端口规则很明确:
    • 端口587或2525对应加密方式TLS
    • 端口465对应加密方式SSL
  • 你的.env里设置了MAIL_PORT=2525却用MAIL_ENCRYPTION=ssl,这直接导致了SSL握手版本不匹配的错误。修正方式二选一:
    # 方式一:2525端口搭配TLS
    MAIL_PORT=2525
    MAIL_ENCRYPTION=tls
    
    或者
    # 方式二:465端口搭配SSL
    MAIL_PORT=465
    MAIL_ENCRYPTION=ssl
    

3. 必要的缓存清理与队列重启

不管用哪种驱动,修改配置后都要执行以下操作确保配置生效:

  • 清除配置缓存:
    php artisan config:clear
    php artisan cache:clear
    
  • 重启队列工作进程(队列进程会缓存旧配置,必须重启才会加载新配置):
    php artisan queue:restart
    

额外检查点

  • 确认MAILGUN_DOMAIN和MAILGUN_SECRET是Mailgun控制台提供的正确值(你的sandbox域名格式是对的,没问题)
  • 如果你在本地环境,确保没有防火墙或代理阻止了Mailgun的连接(API接口是api.mailgun.net,SMTP是smtp.mailgun.org)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:00:40