电子邮件无法使用;Net::SMTPAuthenticationError

我正在 DigitalOcean 上托管 Discourse 服务器,域名来自 PorkBun,邮件服务器来自 MailGun。

我的 MailGun 帐户已激活,并且域名 (discourse.mydomain.com) 已验证可与 mg.mydomain.com 一起使用。所有 DNS TXT 记录都已设置。

我已经多次完成了此处主题中的每一个故障排除步骤;Troubleshoot email on a new Discourse install

我可以在主机上输入 telnet 并手动发送电子邮件而没有问题 (https://serverfault.com/questions/49935/easiest-way-to-send-a-test-email-from-a-server-to-test-settings)。

app.yml 包含以下内容:

  DISCOURSE_DEVELOPER_EMAILS: 'myemail@gmail.com'
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: mail
  DISCOURSE_SMTP_PASSWORD: "12345678901234567890"
  DISCOURSE_SMTP_DOMAIN: mg.mydomain.com
  DISCOURSE_NOTIFICATION_EMAIL: admin@mg.mydomain.com

当我尝试运行 discourse-doctor 或运行 ./launcher enter app 然后运行 rake 'emails:test[mail@mg.mydomain.com]' 时,我会收到以下错误:

======================================== ERROR ========================================
                                    UNEXPECTED ERROR

Net::SMTPAuthenticationError

====================================== SOLUTION =======================================
This is not a common error. No recommended solution exists!

Please report the exact error message above to https://meta.discourse.org/
(And a solution, if you find one!)
=======================================================================================

Discourse 出了问题,因为我手动发送邮件没有问题。我已经搜索了 Google 和这里的论坛很多个小时,但还没有找到解决方案。有什么想法吗?

您的用户名/密码不正确。您的密码可能包含需要转义的字符,例如星号或单引号(因此,最简单的解决方法是更改密码,使其不包含该字符)。

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

2 个赞

密码不包含这些字符。事实上,它是 MailGun 自动生成的密码,只包含字母、数字和一些 ‘-’ 字符。它相当长。

那是我最好的猜测。我建议您尝试生成新密码和/或再次复制粘贴。Discourse 中出现此错误的几率极低。

1 个赞

我敢打赌 DISCOURSE_SMTP_USER_NAME 是不正确的——mail 可能不足以让 mailgun 验证你。它可能应该是 mail@mg.mydomain.com

我猜你认为 DISCOURSE_SMTP_DOMAIN 是用户的域名?它不是——它是 EHLO 域名。你几乎肯定不需要设置它。

1 个赞

我刚也意识到了这一点,当我用 telnet 测试时,我使用了“mail@mg.mydomain.com”作为用户名,它成功了,所以我将再次尝试使用它作为 DISCOURSE_SMTP_USER_NAME

我猜你认为 DISCOURSE_SMTP_DOMAIN 是用户的域名?它不是 - 它是 EHLO 域名。你可能不需要设置它。

不确定我是否明白这是什么意思

对于 MailGun,我使用的是 mg.mydomain.com,对于 Discourse,我使用的是 discourse.mydomain.com。我目前没有任何 DNS 记录用于 mydomain.com,只有 Discourse 子域和 MailGun DNS 的 TXT 记录。

删除 DISCOURSE_SMTP_DOMAIN 这一行,你几乎肯定不需要它。

它在 SMTP 协商期间用作 HELO/EHLO 域。

1 个赞

哦,对了,当我用 telnet 测试时,我确实可以从以下所有地址发送电子邮件:

  • mail@discourse.mydomain.com
  • mail@mydomain.com
  • mail@mg.mydomain.com

不确定我实际上应该使用哪一个?这重要吗?

取决于您的设置以及您希望邮件流看起来如何。

1 个赞

现在可以正常工作了,感谢大家的帮助 :slight_smile:

解决方案是使用

  DISCOURSE_SMTP_USER_NAME: mail@mg.mydomain.com

而不是

  DISCOURSE_SMTP_USER_NAME: mail
2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.