邮件配置(SMTP)
一、为什么发不出邮件?
系统发邮件(密码重置/会费提醒/通知)需要 SMTP 配置。没配就会静默失败。
二、QQ 邮箱配置
1. 开启 SMTP
QQ 邮箱 → 设置 → 账户 → POP3/IMAP/SMTP 服务 → 开启 → 生成授权码。
授权码是 16 位随机串,不是 QQ 密码。
2. 填 .env
MAIL_MAILER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_ENCRYPTION=ssl
MAIL_USERNAME=你的QQ@qq.com
MAIL_PASSWORD=授权码
MAIL_FROM_ADDRESS=你的QQ@qq.com
MAIL_FROM_NAME="协会名称"
三、企业邮箱配置
MAIL_MAILER=smtp
MAIL_HOST=smtp.exmail.qq.com
MAIL_PORT=465
MAIL_ENCRYPTION=ssl
MAIL_USERNAME=admin@yourdomain.com
MAIL_PASSWORD=邮箱密码
MAIL_FROM_ADDRESS=admin@yourdomain.com
MAIL_FROM_NAME="协会名称"
四、阿里云邮件推送
MAIL_MAILER=smtp
MAIL_HOST=smtpdm.aliyun.com
MAIL_PORT=465
MAIL_ENCRYPTION=ssl
MAIL_USERNAME=发信地址
MAIL_PASSWORD=发信密码
阿里云需要先配置发信域名和 DKIM。
五、测试邮件
后台 → 系统设置 → 邮件测试:
填收件邮箱 → 发送 → 看是否收到。
或命令行:
php artisan tinker
>>> Mail::raw('测试', fn($m) => $m->to('test@example.com')->subject('测试'));
六、常见报错
| 报错 | 原因 |
|---|---|
| 535 Authentication failed | 用户名/授权码错 |
| Connection timed out | 端口被封(试 587 或 465) |
| SSL operation failed | 加密方式选错(ssl/tls) |
| 邮件进了垃圾箱 | 域名没做 SPF/DKIM |
七、端口说明
| 端口 | 加密 | 说明 | |---|---|---| | 465 | SSL | 推荐 | | 587 | TLS | 部分服务器只开这个 | | 25 | 无 | 多数云服务器封了 25 端口 |
八、防垃圾邮件建议
- 用企业邮箱(不要用个人 QQ 邮箱群发)
- 配 SPF 记录
- 配 DKIM 签名
- 内容不要全是图片/链接
- 控制发送频率
九、常见问题
配置了但收不到
- 检查垃圾箱
- 看
storage/logs/laravel.log有没有 SMTP 报错 - 用命令行测试一次
- 检查发件人地址是否和 SMTP 账号一致
密码重置邮件里的链接打不开
.env 的 APP_URL 必须是外网可访问的完整地址。