最新版本的Discourse未发送邮件

我在 Discourse 使用 SMTP 发送电子邮件时似乎遇到问题。

我已经与我的电子邮件服务提供商核实了我的主机名,并且已经成功地通过主机 VM 使用 Telnetsendmail 发送了电子邮件,以及通过 Discourse Docker 容器内的 Telnet 发送了电子邮件。

我查看了在 Docker 容器内集成 ‘sendmail’ 的方法,并在直接从 CLI 发送电子邮件时收到了“无法解析主机名”的错误。

对我来说,这意味着 VM 与 SMTP 服务提供商之间的通信没有问题。

我已经尝试了所有常用的 SMTP 端口,并且我相信 app.yml 文件中的配置是正确的。VM 是 Linux 20.04,测试中也使用了 24.04 和 22.04。

加密使用的是 Let’s Encrypt 证书。

  DISCOURSE_SMTP_ADDRESS: <smtp_provider>
  DISCOURSE_SMTP_PORT:  <port>
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_USER_NAME: apikey
  DISCOURSE_SMTP_PASSWORD: "<secret>"
  DISCOURSE_SMTP_ENABLE_START_TLS: true

每当我通过 Discourse 表单发送时,我都会收到“执行已过期”的消息。

1 个赞

检查您的电子邮件服务提供商的限额。有时配额达到上限时发送会失败。尝试从 Outlook 发送电子邮件。我曾经遇到过一次。您的问题可能不同,但它可能对某人仍有用。

1 个赞

如果您收到“无法解析主机名”,听起来就像是主机名无法解析,这是一个问题。

rake emails:test[you@somewhere.com] 是否有效?另请参阅 新 Discourse 安装上的电子邮件故障排除

2 个赞

感谢您的回复。我周末看了一下。我在 Digital Ocean 上创建了一个虚拟机,并使用 Brevo 设置了 SMTP。一切都很好。:slight_smile:

所以 Discourse 没有问题。

我认为 Discourse 使用像 NET::smtp 这样的 Ruby GEM 来发送邮件,并且默认情况下容器内没有安装 smtp 服务器。我们面临的问题是在 Azure 租户上。

在我看来,发送到外部 SMTP 服务的请求被某种位于租户之上的反垃圾邮件机制阻止了。

我还有一些测试要做,以缩小范围。

如果您能提供有关 Discourse 如何发送电子邮件的任何信息,那就太好了 :slight_smile: 我是 Ruby on the Rails 的新手。

1 个赞

但是您配置 SMTP 的方式与在 Digital Ocean 实例上的配置方式相同吗?

运行 rake 任务时会发生什么?

相同:无连接。

我正在使用不同的 SMTP 中继。

我将进行一些测试来验证:

  • 在本地通过 docker-compose 安装 discourse
  • 在不同的订阅下的不同 Azure 租户中安装 Discourse
  • 验证 Brevo 和 SendGrid 的 SMTP 中继

完成这些测试后,我将更新帖子……

无法连接就是无法连接。很明显你被防火墙阻止了。

也许可以试试端口 2525?或者询问你的服务提供商(例如 DigitalOcean)是否阻止了你想要的端口。

@pfaffman 感谢您抽出宝贵时间。事实证明,问题与 DNS 有关。

一切现在都正常工作了 :grinning:

1 个赞

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