邮件 / SMTP 配置
FeedbackPulse 会发送各类事务性邮件。正确的邮件配置对以下功能至关重要:
- 新租户欢迎邮件
- 团队邀请链接
- 密码重置邮件
- 邮件 OTP 验证(用于反馈表单)
- 每日/每周摘要
- 定时报告
- 使用量警报
- 套餐变更通知
⚙️ 配置方式
方式一:通过管理面板(推荐)
- 以超级管理员身份登录
- 前往管理员 → 设置 → 邮件
- 填写您的 SMTP 详情
- 点击发送测试邮件进行验证
- 保存
方式二:通过 .env 文件
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="FeedbackPulse"
📮 各提供商配置
📧 Gmail
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=your_app_password
MAIL_ENCRYPTION=tls
⚠️ 重要: Gmail 需要使用应用专用密码,而非您的常规密码。
- 前往 Google 账户安全
- 启用两步验证(必须)
- 前往应用专用密码 → 选择"邮件" → 生成
- 使用生成的 16 位密码
🔴 Gmail 限制: 个人账户每天 500 封,Workspace 每天 2,000 封。不建议用于生产环境 SaaS。
🔫 Mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=your_mailgun_smtp_password
MAIL_ENCRYPTION=tls
- 在 Mailgun 注册
- 添加您的域名 → 验证 DNS 记录
- 前往 Sending → Domain Settings → SMTP credentials
- 复制 SMTP 密码
📦 Amazon SES
MAIL_HOST=email-smtp.us-east-1.amazonaws.com
MAIL_PORT=587
MAIL_USERNAME=your_ses_smtp_username
MAIL_PASSWORD=your_ses_smtp_password
MAIL_ENCRYPTION=tls
- 前往 AWS SES 控制台
- 验证您的域名
- 前往 SMTP Settings → Create SMTP Credentials
- 生产环境需退出沙盒模式
📨 SendGrid
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=your_sendgrid_api_key
MAIL_ENCRYPTION=tls
💡 注意: 用户名就是字面上的
apikey(不是您的邮箱),密码是您的 SendGrid API 密钥。
✉️ Postmark
MAIL_HOST=smtp.postmarkapp.com
MAIL_PORT=587
MAIL_USERNAME=your_postmark_server_api_token
MAIL_PASSWORD=your_postmark_server_api_token
MAIL_ENCRYPTION=tls
🔵 ZOHO 邮件
MAIL_HOST=smtp.zoho.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=your_zoho_password
MAIL_ENCRYPTION=tls
🧪 Mailtrap(仅限测试!)
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=587
MAIL_USERNAME=your_mailtrap_username
MAIL_PASSWORD=your_mailtrap_password
MAIL_ENCRYPTION=tls
⚠️ Mailtrap 仅用于开发/测试。 邮件会被捕获到您的 Mailtrap 收件箱,不会实际发送给真实收件人。
🧪 测试邮件
通过管理面板
- 前往管理员 → 设置 → 邮件
- 点击发送测试邮件
- 检查您的收件箱
通过命令行
php artisan tinker
Mail::raw('Test email from FeedbackPulse', function ($message) {
$message->to('[email protected]')->subject('SMTP Test');
});
📨 FeedbackPulse 发送的邮件
| 邮件 | 触发时机 | 收件人 |
|---|---|---|
| 欢迎邮件 | 新租户注册 | 租户管理员 |
| 团队邀请 | 管理员邀请团队成员 | 被邀请人邮箱 |
| 套餐变更 | 订阅变更 | 租户管理员 |
| 新提交提醒 | 收到新反馈 | 租户管理员/员工 |
| 邮件摘要 | 每日/每周计划 | 租户管理员 |
| 定时报告 | 每日/每周/每月 | 租户管理员 |
| 使用量警报 | 达到套餐限制的 90%+ | 租户管理员 |
| 密码重置 | 用户请求重置 | 请求用户 |
| 邮件验证 | 新注册 | 新用户 |
| OTP 验证码 | 带 OTP 的反馈表单 | 提交反馈的终端用户 |
🐛 邮件故障排除
| 问题 | 解决方案 |
|---|---|
| 邮件无法发送 | 检查 .env SMTP 设置。尝试 MAIL_MAILER=log 测试是否绕过 SMTP。检查 storage/logs/laravel.log。 |
| 邮件进入垃圾箱 | 为您的域名 DNS 添加 SPF、DKIM 和 DMARC 记录。使用信誉良好的 SMTP 提供商。 |
| "连接超时" | 您的托管服务商可能屏蔽了 587/465 端口。尝试更换端口或提供商。 |
| Gmail "低安全性应用"错误 | 改用应用专用密码。参见上方 Gmail 部分。 |
| 邮件延迟 | 如果使用 QUEUE_CONNECTION=database,请确保队列工作进程正在运行。 |