Email Spam Tester

Home › 集成 › 指南 › SendGrid

指南 · 无需连接

测试 SendGrid 邮件

SendGrid 在一个登录账户下实际提供两种发送方式:Marketing Campaigns 界面和 Email API。它们会为邮件添加不同的标头,因此测试方式略有不同。

指南 · SendGrid

测试来自 SendGrid 的邮件

一个地址,一封邮件,有效期一小时。无需账户或 API 密钥。

获取测试地址

第 1 步

验证域名

域名认证:在 em[0000] 添加一条 CNAME、两条 DKIM CNAME 和一条 DMARC TXT。

第 2 步

向测试地址发送一封真实邮件

向仅含一个联系人的列表执行一次单次发送,或对 /v3/mail/send 执行一次 curl 调用。

第 3 步

查看报告

查找 "via sendgrid.net"、对齐结果行和退订标头。

在 Single Sends 中创建的简报和通过 /v3/mail/send 发送的密码重置邮件,即使来自同一个 SendGrid 账户,最终收到的邮件也可能有明显差异,这会影响垃圾邮件测试。Marketing Campaigns 始终会尝试添加退订标头,而 API 只会在你明确要求时添加。因此,在发送前要先确定你测试的是哪一种邮件。

两种邮件的接收方式相同。Email Spam Tester 会为你提供一个临时地址,无需账户。一小时内只有第一封到达的邮件会被检测,并生成报告,涵盖身份验证、SpamAssassin 和 Rspamd 判定、邮件内容、Gmail 和 Yahoo 制定的批量发件人规则,以及使用你的发送 IP 查询的 21 个黑名单。

Single Sends:测试按钮及其前缀

内置测试位于 Marketing > Single Sends。打开 Single Send,找到 Test Your Email,输入测试地址,然后点击 Send Test Message。SendGrid 要求先填写发件人和主题,才能进行测试。如果主题中包含 Handlebars,还需要填写 Test Data。发送时,SendGrid 会在主题行前添加 Test - 。

正式测试时,请将 Single Send 发送到一个列表。Single Sends 会发送给列表或细分受众,因此请创建一个仅包含测试地址的列表,并在 Recipients 下选择该列表。这样,邮件标头、退订链接和跟踪链接就会与订阅者实际收到的内容一致。如果你还进行了收件箱测试,也可以将其提供商收件箱加入该列表。

API 和 SMTP:一条 curl 命令

以下内容精简自 SendGrid 的入门示例,并将测试地址设为收件人:

curl --request POST \
  --url https://api.sendgrid.com/v3/mail/send \
  --header 'Authorization: Bearer <<YOUR_API_KEY>>' \
  --header 'Content-Type: application/json' \
  --data '{"personalizations":[{"to":[{"email":"test-xxxxxxxxxxxxxxxxxxxx@t.email-spam-tester.com"}],"subject":"Hello, World!"}],"content":[{"type":"text/plain","value":"Heya!"}],"from":{"email":"you@yourdomain.com","name":"Your Name"}}'

启用收件箱测试后,提供商收件箱地址会加入同一个 to 数组,标记则会加入 subject。这样,一次请求也能告诉你 Gmail、Outlook、Yahoo 和其他提供商将邮件放入哪个文件夹。

填入你自己的测试地址,并使用已通过 SendGrid 单一发件人验证或域名身份验证的发件人地址。更好的做法是发送你的应用实际发送的邮件,并使用真实的 HTML,因为内容检查会根据邮件正文进行评分。

如果你的应用通过 SMTP 通信,除传输方式外没有任何变化。主机是 smtp.sendgrid.net,用户名就是字符串 apikey(不是你的密钥),SSL 使用 465 端口。

此外还有一个测试发送端点 POST /v3/marketing/test/send_email。它最多接受 10 个地址,但仅适用于 Dynamic Transactional Templates,因此对于大多数 API 邮件,上面的普通 Mail Send 调用才是真实有效的测试。

退订标头取决于你选择的发送方式

Marketing Campaigns 每次都会尝试添加 List-Unsubscribe 标头。通过 API 或 SMTP 发送的邮件,只有在 Settings > Tracking 中启用 Subscription Tracking 后才会获得这些标头。在这种情况下,SendGrid 会插入带 HTTPS 链接的 List-Unsubscribe,以及 List-Unsubscribe-Post: List-Unsubscribe=One-Click。

如果未启用 Subscription Tracking,你需要在请求中自行添加标头:

"headers": {
  "List-Unsubscribe-Post": "List-Unsubscribe=One-Click",
  "List-Unsubscribe": "<mailto:unsubscribe@yourdomain.com>, <https://yourdomain.com/unsubscribe>"
}

SendGrid 要求同时提供 mailto 和 https 部分,并警告不要在用户对该链接发起普通 GET 请求时执行退订。复制 SendGrid 支持文章中有关这些标头的内容时要小心。文章的第二个示例把 List-Unsubscribe-Post 设置为 URL,这是错误的。它的值始终是 List-Unsubscribe=One-Click。其余内容请参阅我们的 List-Unsubscribe 修复页面。

如果邮件是密码重置邮件或收据,并且没有任何邮件列表标头,报告会将群发邮件发件人规则组标记为已跳过,而不是判定为失败。通过 API 发送的简报不会获得这种处理。

阅读身份验证结果

如果账户未配置域名身份验证,收件人会在你的发件人地址后看到 "via sendgrid.net",SendGrid 文档说明,配置域名身份验证后会移除该标记。报告提供的信息不止这个标记。请查看 DKIM 和 SPF 对齐结果。如果签名或 Return-Path 属于 SendGrid 域名而不是你的域名,DMARC 就无法针对你的发件人地址通过验证,此时修复方案应引导你配置域名身份验证。使用 gmail.com 或 yahoo.com 地址作为发件人地址会更糟。SendGrid 的 DMARC 页面说明,这两种情况下 SPF 和 DKIM 都会失败,控制台本身也会警告,这类邮件可能无法通过 DMARC 检查。

域名身份验证位于 Settings > Sender Authentication。启用自动安全设置时,也就是默认设置,SendGrid 会提供四条记录:

  • em[0000] 上的一条 CNAME,用于 SPF,并会成为你的 Return-Path;
  • s1._domainkey 和 s2._domainkey 上用于 DKIM 的 CNAME;
  • _dmarc 上的一条 TXT,值为 v=DMARC1; p=none;。

这些是示例值。请从你的账户中复制实际值。

名称类型值用途复制
启用自动安全设置(默认)
em[0000]CNAME账户中提供的目标SPF 和 Return-Path。
s1._domainkeyCNAME账户中提供的目标DKIM。
s2._domainkeyCNAME账户中提供的目标DKIM,第二个选择器。
_dmarcTXTv=DMARC1; p=none;DMARC。
关闭自动安全设置
em[0000]MX账户中提供的主机Return-Path。
em[0000]TXTv=spf1 include:sendgrid.net ~allSPF,需要你自行维护。
m1._domainkeyTXT账户中提供的密钥DKIM。

关闭自动安全设置后,你会在 em[0000] 上获得一条 MX 和一条 SPF TXT(v=spf1 include:sendgrid.net ~all),并在 m1._domainkey 上获得一条 DKIM TXT,同时需要自行维护 SPF 记录。如果你的 DNS 提供商拒绝包含 _ 的 CNAME 名称,这是唯一的选择。如果其他服务已在使用选择器 s,SendGrid 允许你选择自定义选择器。使用 DKIM 检查工具(选择器 s1)和 SPF 检查工具检查结果。如果你的 SPF 记录内容越来越多,后者还会统计 DNS 查询次数。

点击跟踪会重写每个链接。如果链接文本本身是 URL,显示的地址就会与实际目标不一致,报告中的链接不匹配检查会将其标记出来。SendGrid 的邮件送达率页面也指出了同一问题。使用文字作为链接文本,或者设置链接品牌,使跟踪链接通过你自己的域名跳转,该域名必须与你的 From 域名匹配。

Trial 和 Essentials 套餐使用共享 IP 池。SendGrid 指出,如果你的信誉发生变化,使用的 IP 池可能会在不另行通知的情况下改变,因此其中一个 IP 被列入阻止列表会影响该池中的所有用户。你可以稍后使用阻止列表检查工具再次查询该 IP。反向 DNS 只能使用专用 IP 进行配置,专用 IP 包含在 Pro Email API 和 Advanced Marketing Campaigns 中。

常见问题

为什么我的邮件会显示 "via sendgrid.net"?

SendGrid 尚未验证你的发件域名。请在 Settings > Sender Authentication 中设置域名验证。根据 SendGrid 的文档,设置完成后,该标记就会消失。

报告显示缺少 List-Unsubscribe,但我使用的是 SendGrid。为什么?

你可能通过 API 或 SMTP 发送邮件,并且关闭了 Subscription Tracking。你可以在 Settings > Tracking 中启用它,也可以自行在 headers 对象中添加这两个标头。

我可以使用 SendGrid 的 "Send Test Message" 进行测试吗?

可以,邮件会发送到测试地址。但请注意,收到的邮件主题前会带有 Test - 。如果需要检查订阅者实际收到的邮件标头,向仅包含一个联系人的列表发送 Single Send 会更接近真实情况。

我可以使用测试发送 API 端点,而不是 Mail Send 吗?

只能用于 Dynamic Transactional Templates,因为 /v3/marketing/test/send_email 只接受此类模板。它最多支持 10 个地址。其他所有邮件都通过 /v3/mail/send 发送。

我应该在 DKIM 检查工具中输入哪个 selector?

如果启用了自动安全设置,请检查 s1 和 s2。如果未启用,selector 是 m1。如果你在设置过程中选择了自定义 selector,请改用该值。

其他平台的指南

所有集成和指南 →

立即测试邮件

一个地址,一封邮件,有效期一小时。无需账户。各项检查完成后,报告会自动生成。

获取测试地址