排查新Discourse安装中的电子邮件问题

SMTP 密码中是否有应避免的字符?如果有,文档中可能会提及。

我的初始密码不起作用,并导致了错误。我更改了密码(通过编辑 app.yml)然后重建了应用程序。之后,我能够收到“确认您的新帐户”电子邮件。

原始电子邮件中的可疑字符是:]

对于新密码,我让 Mailgun 为我生成了一个。

1 个赞

你好 Ted!欢迎来到我们的社区!:hugs:

] 这样的特殊字符最好避免使用。但鉴于 Jay 上面的回复,我认为它应该可以正常工作,就像包含 % 一样。

你的密码里有引号吗?我认为 \" 是一个不可能使用的字符,因为它会包围密码,除非你编辑 app.yml 来添加一个转义符 \\

如果这不是答案,那么我们很可能需要更新这个文档主题,以指明要避免哪些特殊字符!或者更新安装程序以添加警告?

2 个赞

不仔细看的话,我会说将密码更改为不包含特殊字符,或者手动编辑 app.yml 并用单引号将密码括起来。discourse-setup 是一个相当粗糙的工具,并非为所有情况设计。

1 个赞

这就是我推荐的。那个小小的障碍可能使我的安装时间增加了 30 分钟。

更好的是:在安装时添加密码验证,以拒绝不符合标准的密码。

2 个赞

我已经更新了 OP,明确指出密码不能包含特殊字符。这样对吗?

让我们着手将其他建议纳入指南,并删除所有这些回复。快速浏览一下,我并不清楚其中很多内容。例如,第一个回复就建议在更新 SMTP 设置后需要重建,这与指南相矛盾。

2 个赞

文档改进建议:

在配置 SMTP 与外部提供商(我使用的是 SendGrid)时,我没有收到注册电子邮件。运行 discourse-doctor 识别出错误:“原因:550 发件人地址与已验证的发件人身份不匹配”。

虽然我在 SendGrid 中已验证了顶级域名(example.com)用于发送,但我尚未验证 discourse 子域名(discourse.example.com),因此 SendGrid 拒绝了 API 调用。

虽然这只花了大约 15 分钟才弄清楚,但我觉得在 app.yml 和安装脚本中添加一个额外的注释会很有帮助,让新用户在未来安装 Discourse 时更容易理解,从而减少摩擦。此外,直接引用故障排除页面也会很有帮助。

类似这样:

# 大多数 SMTP 提供商都需要经过身份验证的域名或经过身份验证的电子邮件地址才能发送电子邮件。请确保您已将发送域名(example.com)、子域名(discourse.example.com)以及“notifications”电子邮件地址与您的 SMTP 提供商进行身份验证,然后再注册新用户,以确保电子邮件的可送达性。
#
# `discourse-doctor` 命令可以帮助测试您的电子邮件配置。
# 请参阅:https://meta.discourse.org/t/troubleshoot-email-on-a-new-discourse-install
6 个赞

对于 Mailgun 来说,邮件端口 587 不起作用,但端口 2525 起作用?我已经在 app.yml 中将端口更改为 2525,但仍然不起作用?

我该如何修复?

更改端口后,您是否销毁并启动了容器(或重新构建)?

1 个赞

更改端口后进行了重建。我应该销毁并启动容器吗?

温馨提示,从 2025 年 3 月/4 月开始,DigitalOcean 默认阻止所有 droplet 上的 SMTP 端口。如果您提交支持工单,他们可以解除限制,但这似乎是逐例处理的:

希望这能帮其他人避免在一切配置似乎都正确的情况下,却因为电子邮件发送失败而抓狂!:sweat_smile:

2 个赞

几天前 25 端口可以入站,但从未出站

我相信使用端口 2525 发送邮件会有帮助。

1 个赞

我应该如何设置我的 DigitalOcean 虚拟机和 Discourse 设置?这是我第一次这样做。

看看这里 :slight_smile:

1 个赞

安装过程中未收到电子邮件。但是,测试工具发送了带有我的 SMTP 信息的电子邮件。

最常见的问题是 Discourse 使用的通知电子邮件地址是您的 SMTP 服务器无法发送邮件的地址。