无法与 SendGrid 集成

你好,

我尝试使用 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 成功建立连接。

有人能帮忙吗?您知道可能哪里出错了吗?

是从运行 Discourse 的同一台服务器吗?

抱歉,如果这是个愚蠢的问题,但您的 SendGrid 用户名真的是 apiKey 吗?

:thinking:

我之所以问,是因为这是一个不寻常的账户名称选择……

是的

不,我认为 SendGrid 中并没有“用户名”的概念,我只是按照这里的文档操作的:discourse/docs/INSTALL-email.md at main · discourse/discourse · GitHub

我也可能弄错了,但我在我的 SendGrid 账户中没看到任何关于用户名的信息。

他们使用的术语不同,但你仍然需要连接到一个本质上标准的 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 团队寻求帮助。

使用 telnet 时,您是否使用了 apiKey

是的,我按照 How to send an Email with SMTP | SendGrid Docs | Twilio 中的说明操作了,一切正常!不确定在 Discourse 配置中我遗漏了什么。

您的配置文件中的四行是否与我的类似(如上所示)?

其中 DISCOURSE_SMTP_USER_NAME 是否正确,且与您在 SendGrid 的“团队成员”页面中显示的一致?

是的,用户名就是“队友”页面中显示的那个,密码是我生成的密钥(使用此密钥可以通过 telnet 连接),其余两个字段也完全相同。

请问您使用的是哪个版本的 Discourse?我使用的是 beta 版,我怀疑这可能是问题所在。

无论如何,我计划切换到 Mailgun。我今天尝试了一下,它运行得非常顺畅(尽管价格较贵,但目前没有其他选择)。

顺便提一下 @Satwik_Kansal,我们的 Sendgrid API 用户名是 “apikey”,而不是 “apiKey”。运行良好。

遇到同样的问题。这里的要点是什么?是使用“apikey”(不起作用)还是添加团队成员(为空)?

为了记录在案,文档对此的说明相当令人困惑,这已不是我第一次为此问题搜索解决方案了。

当前文档内容为:

SendGrid — 30 天试用期内可发送 4 万封邮件

SMTP 服务器地址?smtp.sendgrid.net
SMTP 用户名?      apikey
SMTP 密码?       [SendGrid API 密钥]

编辑:我认为让人困惑的是,大家(包括我)都以为“apikey”意味着需要在这里填入你的 API 密钥,但实际上它应该保持原样!

真是离谱,对吧?

我猜这会让 99% 尝试过的人感到困惑 :confused:

(当时我也在其中)