你好,
我尝试使用 SendGrid 邮件服务,但日志中一直出现以下错误:
作业异常:535 认证失败:用户名或密码错误
我不确定问题出在哪里,以下是我的配置:
DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: apiKey
DISCOURSE_SMTP_PASSWORD: 'SG.xxxx.xxxxxx.xxxx'
我也尝试过根据 Fresh install. Works. Sendgrid not sending emails - #5 by Ham 的建议使用端口 2525,但同样无效。
我可以通过 telnet 成功建立连接。
有人能帮忙吗?您知道可能哪里出错了吗?
Richie
(Richie Rich)
2
是从运行 Discourse 的同一台服务器吗?
抱歉,如果这是个愚蠢的问题,但您的 SendGrid 用户名真的是 apiKey 吗?

我之所以问,是因为这是一个不寻常的账户名称选择……
是的
不,我认为 SendGrid 中并没有“用户名”的概念,我只是按照这里的文档操作的:discourse/docs/INSTALL-email.md at main · discourse/discourse · GitHub
我也可能弄错了,但我在我的 SendGrid 账户中没看到任何关于用户名的信息。
Richie
(Richie Rich)
4
他们使用的术语不同,但你仍然需要连接到一个本质上标准的 SMTP 服务器,这需要身份验证。
前往 Teammates(团队成员)部分 - https://app.sendgrid.com/settings/teammates
在那里,你将看到能够发送邮件的账户详情:
“Username”(用户名)列中的值就是你需要在 Discourse 设置 DISCOURSE_SMTP_USER_NAME 中输入的内容。
因此,如果“Username”是 SK2019,那么你的配置可能如下所示:
DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: SK2019
DISCOURSE_SMTP_PASSWORD: 'xxxx.xxxxxx.xxxx'
我试过了,但不起作用。SendGrid 文档 提到应使用 apiKey 作为用户名,但这似乎行不通。
也许我应该联系 SendGrid 团队寻求帮助。
Richie
(Richie Rich)
6
使用 telnet 时,您是否使用了 apiKey?
Richie
(Richie Rich)
8
您的配置文件中的四行是否与我的类似(如上所示)?
其中 DISCOURSE_SMTP_USER_NAME 是否正确,且与您在 SendGrid 的“团队成员”页面中显示的一致?
是的,用户名就是“队友”页面中显示的那个,密码是我生成的密钥(使用此密钥可以通过 telnet 连接),其余两个字段也完全相同。
请问您使用的是哪个版本的 Discourse?我使用的是 beta 版,我怀疑这可能是问题所在。
无论如何,我计划切换到 Mailgun。我今天尝试了一下,它运行得非常顺畅(尽管价格较贵,但目前没有其他选择)。
顺便提一下 @Satwik_Kansal,我们的 Sendgrid API 用户名是 “apikey”,而不是 “apiKey”。运行良好。
ivan12
(IvanS)
11
遇到同样的问题。这里的要点是什么?是使用“apikey”(不起作用)还是添加团队成员(为空)?
misterjtc
(Jordan Cook)
12
为了记录在案,文档对此的说明相当令人困惑,这已不是我第一次为此问题搜索解决方案了。
当前文档内容为:
SendGrid — 30 天试用期内可发送 4 万封邮件
SMTP 服务器地址?smtp.sendgrid.net
SMTP 用户名? apikey
SMTP 密码? [SendGrid API 密钥]
编辑:我认为让人困惑的是,大家(包括我)都以为“apikey”意味着需要在这里填入你的 API 密钥,但实际上它应该保持原样!