Laravel发送邮件报错:sendmail进程连接意外关闭求助
Laravel发送邮件报错"Connection to 'process /usr/sbin/sendmail -bs -i' has been closed unexpectedly"解决方法
你的配置存在明显矛盾:MAIL_MAILER设为sendmail,但同时填写了Gmail SMTP的相关参数,这是错误的根源。以下是两种针对性解决方法:
方案1:使用Gmail SMTP发送(推荐)
既然你填写了Gmail的SMTP信息,应该切换到smtp邮件驱动,并修正参数:
- 修改
.env配置:
MAIL_MAILER=smtp MAIL_HOST=smtp.googlemail.com MAIL_PORT=587 MAIL_USERNAME=你的完整Gmail邮箱地址 MAIL_PASSWORD=你的Gmail应用专用密码(开启两步验证时必须用这个,不能用登录密码) MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS="你的发件邮箱地址" MAIL_FROM_NAME="${APP_NAME}"
- 关键注意点:
- 若Gmail开启两步验证,必须到谷歌账户设置中生成应用专用密码
- 若未开启两步验证,需确保账户允许"不太安全的应用访问"(谷歌现在默认禁用,建议优先开启两步验证用应用密码)
- 修改后执行命令清除配置缓存:
php artisan config:clear
方案2:使用sendmail发送
如果确实要使用sendmail,需确保系统环境配置正确:
- 检查sendmail是否安装:
which sendmail
返回路径则已安装,未安装的话根据系统执行安装命令:
- Ubuntu/Debian:
apt install sendmail - CentOS/RHEL:
yum install sendmail
- 启动并设置sendmail开机自启:
systemctl start sendmail systemctl enable sendmail
- 简化
.env配置,移除SMTP冗余参数:
MAIL_MAILER=sendmail MAIL_FROM_ADDRESS="你的发件邮箱" MAIL_FROM_NAME="${APP_NAME}"
- 同样执行清除缓存命令:
php artisan config:clear
内容的提问来源于stack exchange,提问作者Paranthaman
相关产品推荐
相关产品推荐

