这几天我一直在折腾这个问题,但似乎怎么也搞不明白为什么邮件功能无法正常工作。我的域名是在 Namecheap 注册的,并已指向 Cloudflare,随后在 Digital Ocean 上安装了 Discourse,现在正尝试集成 SendGrid。
Containers 文件夹的配置如下:
DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 2525
DISCOURSE_SMTP_USER_NAME: apikey
DISCOURSE_SMTP_PASSWORD: "Q0Ou956E"(已移除大部分密码)
DISCOURSE_SMTP_ENABLE_START_TLS: true #(可选,默认为 true)
## 如果您添加了 Let's Encrypt 模板,请取消注释以下行以获取免费 SSL 证书
LETSENCRYPT_ACCOUNT_EMAIL: matthew@virtusventus.com
我运行了 Discourse Doctor,它显示连接成功。但 SendGrid 的报告并未显示该消息,我也从未收到任何邮件。我一直在搜索并调整不同的配置行,但似乎都没有效果。
我到底漏掉了什么?
pfaffman
(Jay Pfaffman)
2
这几乎肯定意味着邮件已成功发送至 SendGrid。
我唯一的猜测是你登录了错误的 SendGrid 账户。你可以尝试使用 mail-tester.com,看看邮件是否能到达那里。
另一种可能性是发件人地址配置不当。您是否从与 Discourse 主机名相同的域名发送邮件?如果不是,您是否更改了通知电子邮件地址?
我使用的 Discourse 域名与开发者邮箱使用的域名不同……是的,我已在容器应用的末尾将通知地址更改为与我开发者邮箱一致的地址。
更改后你重新构建了吗?
我对 SendGrid 并不十分精通,但如果你所说的“开发者邮箱”是指类似沙盒的环境,那么一个可能的原因是沙盒只允许向已验证的地址发送邮件。
但如果情况并非如此,我首先会查看 SendGrid 账户中的日志,以确认 SendGrid 是否因某种原因拒绝了我的邮件。
是的,它已经重建……“开发者邮箱”是在 Discourse 中设置的,这就是设置所要求的。
以下是 Discourse Doctor 的输出结果……但 SendGrid 并未收到
==================== 邮件测试 ====================
要进行可靠的测试,请从 http://www.mail-tester.com/ 获取一个地址。
或者只需给自己发送一封测试邮件。
用于邮件测试的电子邮件地址?(输入 'n' 跳过)[matthew@Virtusventurs.com]:
正在向 matthew@Virtusventurs.com 发送邮件……
正在使用 smtp.sendgrid.net:2525 测试向 matthew@Virtusventurs.com 发送邮件。
SMTP 服务器连接成功。
正在向 matthew@Virtusventurs.com 发送邮件……
邮件已被 SMTP 服务器接受。
这行信息表明邮件已到达 SendGrid,因此你需要联系他们以查明为何尚未送达。
谢谢大家……我已经解决了……问题出在 SendGrid 那边。