Laravel 8.77.1发送邮件遇Swift_TransportException错误求助
Laravel 8.77.1 SMTP连接错误(Swift_TransportException)排查方案
核对.env邮件配置
打开项目根目录的.env文件,确认SMTP相关配置无拼写错误,重点检查主机地址、端口、账号密码:MAIL_MAILER=smtp MAIL_HOST=mail.mydomain_name.com MAIL_PORT=465 MAIL_USERNAME=你的邮箱账号@mydomain_name.com MAIL_PASSWORD=你的邮箱密码 MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=你的邮箱账号@mydomain_name.com MAIL_FROM_NAME="${APP_NAME}"修改后执行
php artisan config:cache刷新配置缓存,确保新配置生效。测试服务器网络连通性
登录应用服务器,用命令测试能否连接目标SMTP的465端口:
使用telnet:telnet mail.mydomain_name.com 465
或curl:curl -v ssl://mail.mydomain_name.com:465
若连接失败,大概率是服务器防火墙/安全组封禁了465端口出站请求,或是邮件服务商未开放该端口,需联系对应管理员确认。排查SSL证书问题
若邮件服务器SSL证书不被应用服务器信任,会触发连接错误。可临时关闭证书验证(仅用于测试,生产环境禁用):
打开config/mail.php,在smtp配置项中添加stream参数:'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_mode' => null, // 新增以下配置 'stream' => [ 'ssl' => [ 'allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false, ], ], ],若测试能正常发邮件,说明是证书问题,需给服务器安装信任证书,或联系邮件服务商获取合法证书。
更换端口或驱动尝试
多数邮件服务商支持587端口+TLS加密,可修改.env中MAIL_PORT=587、MAIL_ENCRYPTION=tls后重新测试。
若服务器本地有sendmail服务,也可将MAIL_MAILER改为sendmail,绕开SMTP连接问题。
内容的提问来源于stack exchange,提问作者Jatinder
相关产品推荐
相关产品推荐

