设置邮件发送
邮件是 KolleK 在浏览器会话之外触达用户的方式:邀请、魔法链接、密码重置、邮箱验证,以及 安全提醒 都通过邮件发送。在你配置好邮件发送之前,这些邮件哪里都到不了。
默认设置不会发送任何邮件
全新安装的实例默认使用 MAIL_MAILER=log。每一封邮件都只会被写入应用日志文件,而不会真正发送出去。这是有意为之的设计:这样一来,一个配置未完成的实例不会悄悄用错误的地址发出邮件,而你在测试时也能准确看到本该发送的内容。
备注
如果有人在一个新实例上反馈“我从没收到邀请邮件”,几乎总是因为这个默认设置。邮件其实存在,只是在日志文件里。参见 邮件投递问题排查。
发送真实邮件有两种受支持的方式:任意 SMTP 服务器,或者 Resend 服务。
方式一:SMTP
1
设置邮件驱动和服务器信息
在 .env 中设置:
MAIL_MAILER=smtp
MAIL_HOST=smtp.yourprovider.com
MAIL_PORT=587
MAIL_USERNAME=your-username
MAIL_PASSWORD=your-password
任何提供 SMTP 凭据的事务性邮件服务商或自建邮件服务器都可以使用。
2
设置发件人信息
设置用户会看到的发件地址和名称:
MAIL_FROM_ADDRESS=kollek@yourdomain.com
MAIL_FROM_NAME="KolleK"
请使用一个你自己掌控、并且已经完成发信配置(在服务商处设置了 SPF 和 DKIM)的域名,否则邮件很可能会被归入垃圾邮件。
3
应用配置并测试
重新创建容器,然后触发一封真实邮件,例如在登录页面请求一个魔法链接:
docker compose up -d
方式二:Resend
如果你使用 Resend,设置:
USE_RESEND=true
RESEND_API_KEY=re_your_api_key
之后邮件会通过 Resend 的 API 发送,而不是通过 SMTP,并且每次发送都会记录对应的 Resend 消息 ID。
验证邮件发送是否生效
KolleK 会为每个用户记录它发送过的每一封邮件,包括主题、正文和投递状态。测试之后,检查以下两处:
- 你的收件箱,这个不用多说。
- 收件人个人资料中的已发送邮件页面,其中列出了实例发送给他们的所有邮件。参见 你的个人活动日志与已发送邮件。
常见的失败迹象:
- 什么都没收到,也没有报错。 邮件驱动可能仍然是
log。检查是否已经通过重新创建容器让.env生效。 - 邮件发出去了,但进了垃圾邮件。 发件域名没有完成身份验证,请在服务商处配置 SPF 和 DKIM。
- 日志中出现发送错误。 凭据或服务器信息有误,queue 容器的日志中会包含服务商返回的错误信息。
邮件由后台队列发送,因此 queue 容器必须处于运行状态,实例才能真正发出任何邮件。
接下来去哪里
- 在 KolleK 发送的邮件 中了解你的实例会发送哪些邮件。
- 在 邮件投递问题排查 中排查邮件发送问题。
KolleK 文档
在 GitHub 上编辑此页
此页面有帮助吗?