跳到主要内容

邮件 / SMTP 配置

FeedbackPulse 会发送各类事务性邮件。正确的邮件配置对以下功能至关重要:

  • 新租户欢迎邮件
  • 团队邀请链接
  • 密码重置邮件
  • 邮件 OTP 验证(用于反馈表单)
  • 每日/每周摘要
  • 定时报告
  • 使用量警报
  • 套餐变更通知

⚙️ 配置方式

方式一:通过管理面板(推荐)

  1. 以超级管理员身份登录
  2. 前往管理员 → 设置 → 邮件
  3. 填写您的 SMTP 详情
  4. 点击发送测试邮件进行验证
  5. 保存

方式二:通过 .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 需要使用应用专用密码,而非您的常规密码。

  1. 前往 Google 账户安全
  2. 启用两步验证(必须)
  3. 前往应用专用密码 → 选择"邮件" → 生成
  4. 使用生成的 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
  1. Mailgun 注册
  2. 添加您的域名 → 验证 DNS 记录
  3. 前往 Sending → Domain Settings → SMTP credentials
  4. 复制 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
  1. 前往 AWS SES 控制台
  2. 验证您的域名
  3. 前往 SMTP Settings → Create SMTP Credentials
  4. 生产环境需退出沙盒模式

📨 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 收件箱,不会实际发送给真实收件人。


🧪 测试邮件

通过管理面板

  1. 前往管理员 → 设置 → 邮件
  2. 点击发送测试邮件
  3. 检查您的收件箱

通过命令行

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,请确保队列工作进程正在运行。

⏭️ 后续步骤