Sendgrid 返回 202 但不发送电子邮件

Posted

技术标签:

【中文标题】Sendgrid 返回 202 但不发送电子邮件【英文标题】:Sendgrid returns 202 but doesn't send email 【发布时间】:2017-07-02 00:40:53 【问题描述】:

我正在尝试让 sendgrid 的基本“hello world”正常工作,但到目前为止还没有成功。响应返回代码 202,表明它将发送电子邮件,但电子邮件从未发送出去。有谁知道怎么回事?

import sendgrid

sg = sendgrid.SendGridAPIClient(apikey='**my-api-key**')
data = 
  "personalizations": [
    
      "to": [
        
          "email": "me@gmail.com"
        
      ],
      "subject": "Hello World from the SendGrid Python Library!"
    
  ],
  "from": 
    "email": "me@gmail.com"
  ,
  "content": [
    
      "type": "text/plain",
      "value": "Hello, Email!"
    
  ]

response = sg.client.mail.send.post(request_body=data)
print(response.status_code)

【问题讨论】:

你检查过 sendgrid api 日志吗?如果它通过您的代码发送给他们,应该列出原因 谢谢,我没有意识到那里有。这是接收域限制 (DMARC)? 你终于解决了吗?如果是的话,请分享一下,这里的情况一样,谢谢! 【参考方案1】:

对我们来说,问题在于使用的动态模板尚未设置为“活动”。不幸的是,API 响应或日志中没有显示任何错误。

激活电子邮件模板解决了这个问题,电子邮件不再被丢弃。

【讨论】:

【参考方案2】:

我有同样的问题,并通过添加具有完全访问权限的新 api 密钥解决了它

【讨论】:

【参考方案3】:

从 SendGrid 返回的 202 Accepted Status Code 并不真正表示邮件已成功传递到收件人收件箱。它表示消息有效并且已“排队等待传递”。现在,由接收服务器将该邮件传送到收件人的收件箱,或者将其发送到垃圾邮件中,或者干脆丢弃该邮件。

从 SendGrid 返回 202 Accepted Status 代码的邮件实际上没有传递到收件人收件箱有几个原因。 例如:

    无效的电子邮件地址:电子邮件地址可能不再有效(例如,当员工停止在某些公司工作时,他们的电子邮件可能会从公司系统中删除,从而无法接收任何电子邮件)。 阻止的电子邮件:如果发送 IP 或域被阻止,或者收件人收件箱提供商设置了一些过滤器,这样您的电子邮件/广告系列的某些特定内容被视为垃圾邮件并因此被自动阻止。李>

另外需要注意的是,如果域身份验证未正确设置,SendGrid 可能会将邮件发送到垃圾邮件/垃圾邮件。因此,请确保您的域已正确验证。

这里是 SendGrid 文档的链接,详细解释了这些事件。 https://sendgrid.com/blog/delivered-bounced-blocked-and-deferred-emails-what-does-it-all-mean/

【讨论】:

【参考方案4】:

当未验证 DNS 并且您未在 from email 中使用注册电子邮件时,也会出现同样的问题。 只需更改from email 即可注册邮箱。

【讨论】:

【参考方案5】:

我也有这个问题。我联系了 sendgrid 支持,但是在等待时我将虚拟数据更改为我正在调用 sendgrid API 的真实数据,然后它开始工作。

特别是我更改了发件人电子邮件地址以显示我自己的域。

【讨论】:

【参考方案6】:

以防有人遇到此问题以寻找类似问题的答案。我通过使用 DNS 记录确认域解决了同样的问题 - 之后一切都像魅力一样。

在 Sendgrind 中:设置 > 发件人身份验证 > 域身份验证

【讨论】:

这也适用于我从我的 .com.au 域发送邮件,该域使用 gmail 作为邮件服务器。【参考方案7】:

我最近遇到了同样的问题。我的邮件没有无故发送,回复状态为202,邮件活动为空。可能的解决方案是添加公司详细信息并在电子邮件中添加取消订阅块。这对我有用。

我正在实现密码重置功能,为此设置取消订阅块有点奇怪。我会试着弄清楚这种沉默压制的真正原因是什么。可能是因为我多次尝试发送看起来像垃圾邮件的草稿调试电子邮件。也许 SendGrid 有一些智能算法可以检测到这一点。

【讨论】:

【参考方案8】:

我刚刚遇到了这个问题:我使用 SendGrid 创建了一个帐户并尝试让基本示例正常工作,API 将返回 202 响应,但电子邮件从未发送,the SendGrid web UI's activity feed 未显示任何活动。

我submitted a SendGrid support ticket 大约 8 小时后收到回复说他们已禁用我的帐户发送电子邮件的功能:

你好,

感谢您联系 SendGrid 支持!

您的帐户似乎已被我们的合规团队关闭,这就是问题的原因。

要重新激活,我们想进一步了解您将通过 SendGrid 发送的电子邮件。请详细说明以下内容:

    您的业务性质、您提供的服务以及您的潜在客户群

    您的发送频率和数量

    您如何收集收件人地址(选择加入页面或注册过程的链接)

    您将如何允许您的收件人选择退出您的电子邮件(无论您打算使用 SendGrid 的一键退订功能,还是您有自己的方法)

    您将发送的消息类型(交易或营销)

请尽快回复以继续激活过程。感谢您的合作!


在提交答案后约 15 小时,我收到回复说我的帐户已“激活”:

你好 nathan.wailes,

感谢您提供更多信息!您的 SendGrid 帐户已 已激活,现在可用于发送电子邮件。要开始,请检查 退出我们的Getting Started 页面。

如果您在设置过程中遇到任何障碍,您可以找到 在我们的Knowledge Base 中解决常见问题和常见问题解答。

如果您还有任何问题,请告诉我!

最好的,

史蒂文·O.

助理支持工程师


当我运行基本示例代码并将我的电子邮件地址设置为收件人时,电子邮件立即显示在我的 Gmail 收件箱中。

【讨论】:

这也发生在我身上。被合规阻止。 令人沮丧。这应该是 403。【参考方案9】:

通过此处的 sendgrid api 日志进行调试: https://app.sendgrid.com/email_activity

在我的例子中,它是一个 DMARC 接收域块。

【讨论】:

如果活动源什么都不显示怎么办?我正在按照sendgrid.com/docs/Integrate/Code_Examples/v3_Mail/nodejs.html 的示例到t,没有错误,获取状态代码202,并且此答案中包含的链接中仍然没有任何内容。 同样的问题,但是 api 日志在我的情况下也没有显示任何内容。

以上是关于Sendgrid 返回 202 但不发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

SendGrid 无法发送电子邮件、firebase 功能。 (代码:403)

提交时出现 SMTP 邮件服务器 (sendgrid) 错误

Azure : 通过 SendGrid 发送邮件

Sendgrid - 活动显示已发送电子邮件但未收到电子邮件

在共享主机上使用 Sendgrid 发送电子邮件

使用 SendGrid 发送带附件的电子邮件