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

Laravel配置Postfix发送邮件遇Swift_TransportException,求正确配置

解决Laravel中Postfix仅发送配置问题

首先,你之前用SMTP驱动连接G Suite没问题,但Postfix作为本地仅发送服务时,其实用sendmail驱动会更适配——因为Postfix默认提供了sendmail兼容的执行文件,不需要走SMTP端口连接。当然如果坚持用SMTP驱动也可以,下面分别给出两种正确配置方式:

方式一:使用Sendmail驱动(推荐)

修改你的.env文件为以下内容:

MAIL_MAILER=sendmail
MAIL_SENDMAIL_PATH='/usr/sbin/sendmail -t -i'

注意:Laravel 6+版本把MAIL_DRIVER改成了MAIL_MAILER,如果你的Laravel版本低于6,还是用MAIL_DRIVER=sendmail。
sendmail的路径可以用which sendmail命令确认,通常就是/usr/sbin/sendmail。

配置完成后,一定要清除Laravel的配置缓存,避免旧配置干扰:

php artisan config:clear

方式二:使用SMTP驱动连接本地Postfix

如果你还是想用SMTP驱动,需要确保Postfix正在监听localhost:25,并且允许本地连接。修改.env配置如下:

MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=25
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=
MAIL_FROM_ADDRESS=your-valid-email@your-domain.com
MAIL_FROM_NAME="${APP_NAME}"

这里把MAIL_HOST改成127.0.0.1而非localhost,避免DNS解析问题导致连接失败;MAIL_ENCRYPTION留空或设为false,因为本地25端口默认不加密;用户名和密码留空即可,本地Postfix允许免认证的本地连接。

同样,配置后要清除配置缓存:

php artisan config:clear

额外排查步骤

如果还是报错,可以做以下检查:

  • 确认Postfix正在运行:sudo systemctl status postfix
  • 确认Postfix监听127.0.0.1:25:ss -tulpn | grep :25,应该能看到postfix进程监听127.0.0.1:25
  • 测试本地SMTP连接:用telnet 127.0.0.1 25或者nc 127.0.0.1 25,如果能看到220开头的欢迎信息,说明端口是通的

内容的提问来源于stack exchange,提问作者Marco Vinicius Castellari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:42:43