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