我部署了一个自托管的 Discourse 实例,并使用 socketlabs.com 作为 SMTP 服务器(他们有一个免费计划,每月 40000 封邮件)。无论我尝试哪种认证协议,都无法让邮件正常工作。
我通过修改 lib/tasks/emails.rake 文件解决了这个问题,具体修改如下:
将这一行:
Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password])
修改为:
Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])
如果不设置此项,底层的 SMTP 代码似乎会回退到默认的 ‘plain’ 认证方式。