我创建账户时没有收到电子邮件,我想知道是不是我做错了什么……SMTP地址和SMTP域有什么区别?
SMTP 地址:user@example.com
SMTP 域名:example.com
您能帮帮我吗?我在线上使用了一个 SMTP 工具,一切运行正常,但 Discourse 在我注册时似乎不发送电子邮件。
你好,欢迎你 @ethhaqn ![]()
你是否查看过故障排除指南?
我使用了 telnet mail.theapi.tech 25,它返回了 220 myhelper.tech ESMTP Postfix,这是我过去用于测试此系统的一个旧域。您认为这会影响电子邮件发送吗?如果是,我可以在哪里更改该域?再说一遍,这是一个旧域,但我不知道我在哪里输入了它,以至于当我运行 telnet mail.theapi.tech 25 时会返回它。
另外,值得一提的是 ./discourse-doctor 告诉我有一个不常见的错误,似乎无法解决我的问题。
此外,我没有使用 ./discourse-setup 来设置 Discourse,因为 80 端口已被占用。相反,我手动编辑了 containers/app.yml 并运行了 ./launcher rebuild app。
我使用了 tail shared/standalone/log/rails/production.log,日志显示:
Processing by FinishInstallationController#confirm_email as HTML
Rendered finish_installation/confirm_email.html.erb within layouts/finish_installation (Duration: 0.7ms | Allocations: 255)
Rendered layout layouts/finish_installation.html.erb (Duration: 6.7ms | Allocations: 2103)
Completed 200 OK in 8ms (Views: 7.4ms | ActiveRecord: 0.0ms | Allocations: 2735)
start
Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 34)
Delivered mail 0e5b023a-90f9-4c23-ae2b-488b4d70d907@theapi.tech (39.6ms)
Job exception: hostname "mail.theapi.tech" does not match the server certificate
fail
openssl s_client -connect mail.theapi.tech:25 -starttls smtp -showcerts
Verification error: self signed certificate
因此,您需要在 app.yml 中设置 DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
那不就意味着您不需要验证您的电子邮件了吗?
不。它将使 Discourse 跳过当前正在失败的验证。
好的,搞定了。我该如何获取 SSL 证书?顺便说一下,这在我的 app.yml 中:

我认为设置自己的邮件服务器部分超出了本论坛的讨论范围。
不,不是在我的邮件服务器上。是在我的 Discourse 网站上。
您好,我已将我的 Discourse 本地实例升级到 2.9.0.beta4,即使在 containers/app.yml 文件中添加了 DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: "none"(并重建了应用程序)后,我仍然收到此类错误:
Rendered layouts/email_template.html.erb (Duration: 0.2ms | Allocations: 34)
Delivered mail 31c5b9eb-1077-4155-b040-314c4a8566cb@taverne.colorfulminis.com (11.3ms)
Job exception: SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate)
这显然导致我的 Discourse 实例无法再发送电子邮件。
关于此问题是否有任何已知问题?
供您参考:我正在运行一个预生产实例,版本为 2.8.0.beta9,配置完全相同,电子邮件发送得非常顺利。
感谢您的帮助。
您好 Alexis,
我遇到了完全相同的问题,是在虚拟机(Ubuntu 22.04,使用基于 docker 的 2.9.0.beta4 Discourse 实例)上。即使在 container/app.yml 中设置了 DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none(并且 docker 环境中的 $DISCOURSE_SMTP_OPENSSL_VERIFY_MODE 也设置为 none),仍然会报 certificate verify failed (self signed certificate) 错误。
编辑:供您参考,稳定版(2.8.3)工作正常。
供参考:启用 DISCOURSE_SMTP_ENABLE_START_TLS: true 解决了我的问题。
对于所有在此主题中搜索答案但未成功的人:
我刚刚发现我的 VPS 托管提供商要求我在新安装的服务器上先启用出站邮件端口。我知道这一点,但在睡了一晚后才想起来 ![]()
祝您托管愉快! ![]()