新安装的 Discourse-Doctor 出现 SMTPAuthenticationError

我在 Digital Ocean Droplet 中全新安装了 Discourse,过程还算顺利,但在注册管理员帐户时没有收到通知邮件。

我查看了 Troubleshooting 邮件,直到看到其中一条评论才找到解决方案:

双引号可以。如果您的密码中包含某些字符(例如反斜杠?),则需要使用 nano 等编辑器编辑文件。

这一点,以及 /containers/app.yml 中关于“#”引起问题的注释,让我对我的密码产生了疑问。我的密码同时包含下划线和波浪线。

我创建了一个密码只包含字母数字字符的新电子邮件帐户,这解决了问题。现在 ./discourse-doctor 中的电子邮件可以正常工作,我也能够重新发送和接收通知邮件。

我想把这个经验分享出来,以防其他人也因为无法辨别的原因而遇到 SMTPAuthenticationError 错误。尝试使用密码中不含特殊字符的帐户。:grinning:

3 个赞

我的密码中包含 -,但从未遇到过你遇到的问题。

# 是说得通的,因为它会取消 yml 文件中任何位置的代码注释:注释以井号(#)开头,可以出现在一行的任何位置,并一直持续到行尾(https://en.wikipedia.org/wiki/YAML)。

1 个赞

@MarcP
很有趣。如果让我猜的话,因为app.yml文件中的SMTP密码是用双引号括起来的,我会认为除了双引号之外的任何字符都可以。这让我怀疑是不是我做了别的事情。
我会做更多测试并把结果发回来。

1 个赞

我真是太着急了。

我将 DISCOURSE_SMTP_USER_NAMEDISCOURSE_SMTP_PASSWORD 重置为给我 SMTP 身份验证错误的原始帐户,并在销毁应用程序后,当我运行 ./launcher start app 时,我遇到了以下错误:

found unknown escape character while parsing a quoted scalar at line 67 column 28 -e LANG=en_US.UTF-8
YAML syntax error. Please check your containers/*.yml config files.

果然,密码中有一个我昨天没注意到的 \\

为了确认,我使用了新帐户的电子邮件地址,将帐户密码更改为不带 \\ 的失败帐户的密码,将其保存在 app.yml 中,然后重新启动应用程序,错误消息不再出现。使用 discourse-doctor 进行的电子邮件测试也成功了。然后,我创建了一个包含大量特殊字符的新密码,但不包括 #\\,并重复了测试。这也成功了。

总而言之,看起来特殊字符在 app.yml 的 DISCOURSE_SMTP_PASSWORD 字段中是可以的,但数字符号 #、反斜杠 \\ 以及可能还有双引号 \" 除外?

2 个赞

:+1: 我喜欢,太棒了 :sunglasses: