如何从SendGrid迁移到Mailer To Go
将您的事务性电子邮件从 SendGrid 迁移到 Mailer To Go 主要是 DNS 和凭证的交换——难点不在代码,而在于切换而不丢失您的发送信誉或重新发送已退回或取消订阅的人。本指南按顺序介绍整个迁移过程,包括确切的配置更改和安全的、可逆的推出。
如果您仍在考虑中,SendGrid 替代品对比涵盖了原因。本指南是方法。
开始前:盘点 SendGrid 为您做了什么
迁移出错往往是因为某些隐形的东西被遗留下来了。列出以下内容:
- 发送域和您现在发送的 From 地址。
- 您的抑制数据 —— 退回、阻止、垃圾邮件举报和取消订阅。这是您必须携带的东西;重新发送一个被抑制的地址会在第一天就破坏您的信誉。
- 您发送的方式 —— SMTP、Web API(
@sendgrid/mail、sendgrid-ruby、sendgrid用于 Python)或两者。 - 存储在 SendGrid 中的模板(动态模板)与在您的应用中呈现的模板。
- 事件 webhook(已送达/打开/点击/退回)以及任何下游消费它们的东西。
- 大致的每日/峰值容量,以便您可以规划预热。
第 1 步——创建您的 Mailer To Go 发送域
在 mailertogo.com 注册并添加发送子域而不是您的根域——我们建议 mtg.yourdomain.com。它隔离了您的信誉,如果您委托它,允许我们为您管理 DNS。请参阅为什么 Mailer To Go 从 mtg.yourdomain.com 发送了解理由和设置。
第 2 步——身份验证(SPF、DKIM、DMARC)
发布您的仪表板中为发送域显示的 SPF、DKIM 和 DMARC 记录。如果您已经为 SendGrid 运行 DMARC,您领先了——您只需在重叠期间将 Mailer To Go 添加为授权源,并在 SendGrid 消失后收紧。带有真实记录和 dig 验证的完整演练:端到端电子邮件身份验证。
第 3 步——交换您的凭证
SMTP。 SendGrid 的标志性配置是字面用户名 apikey。改为将相同的邮件程序指向 Mailer To Go:
# 之前——SendGrid
host: smtp.sendgrid.net port: 587
username: apikey
password: SG.xxxxxxxx (您的 SendGrid API 密钥)
# 之后——Mailer To Go
host: smtp.<region>.mailertogo.net port: 587
username: <MAILERTOGO_SMTP_USER>
password: <MAILERTOGO_SMTP_PASSWORD>
在 Rails 中,那只是新的环境值——无代码更改:
# config/environments/production.rb
config.action_mailer.smtp_settings = {
address: ENV["MAILERTOGO_SMTP_HOST"], # smtp.<region>.mailertogo.net
port: 587,
user_name: ENV["MAILERTOGO_SMTP_USER"],
password: ENV["MAILERTOGO_SMTP_PASSWORD"],
authentication: :plain,
enable_starttls_auto: true
}
API。 如果您使用 SendGrid 的 SDK,将传输切换到 SMTP(代码最少的路径)或 Mailer To Go API。在 Node 中,从 @sendgrid/mail 通过 Nodemailer 切换到 SMTP:
// 之前——@sendgrid/mail
// sgMail.setApiKey(process.env.SENDGRID_API_KEY);
// await sgMail.send({ to, from, subject, html });
// 之后——Nodemailer over Mailer To Go SMTP
const nodemailer = require("nodemailer");
const transport = nodemailer.createTransport({
host: process.env.MAILERTOGO_SMTP_HOST,
port: 587,
auth: { user: process.env.MAILERTOGO_SMTP_USER, pass: process.env.MAILERTOGO_SMTP_PASSWORD },
});
await transport.sendMail({ to, from, subject, html });
第 4 步——导入您的抑制列表(请勿跳过)
在切换前从 SendGrid 导出您的抑制 —— 仪表板中的抑制 → 全局取消订阅/退回/垃圾邮件举报/阻止,或通过 API:
curl -s -H "Authorization: Bearer $SENDGRID_API_KEY" \
https://api.sendgrid.com/v3/suppression/bounces > bounces.json
curl -s -H "Authorization: Bearer $SENDGRID_API_KEY" \
https://api.sendgrid.com/v3/suppression/unsubscribes > unsubscribes.json
将这些地址加载到您的 Mailer To Go 抑制列表中,这样硬退回或取消订阅的联系人就永远不会收到电子邮件。这一步单独保护了您在 SendGrid 上花费多年建立的信誉。
第 5 步——预热并逐步切换
您的新发送域还没有信誉,所以不要一次性切换 100% 的流量。并行运行两个提供商并分阶段转移流量——例如 10% → 25% → 50% → 100% 在一到两周内——从您最敬业、风险最低的邮件开始(密码重置、收据)。在每个步骤观察退回和投诉率。直到您完全切换,保持 SendGrid 活跃并能够恢复流量。
第 6 步——验证,然后停用
- 发送测试邮件并确认 SPF、DKIM 和 DMARC 都通过(Gmail → 显示原始内容)。
- 将您的事件 webhook 重新指向您应用的 Mailer To Go 处理程序,并确认退回/投诉事件仍然流动。
- 一旦 100% 的流量在 Mailer To Go 中干净运行几天后,降级或取消 SendGrid——但将其 SPF/DKIM 记录保留在原位一两周以防您需要回滚,然后删除它们。
回滚
因为切换是凭证 + DNS,回滚很快:将您的邮件程序的环境变量指向回 SendGrid。在重叠期间保持两个提供商都通过身份验证是使其成为单行更改而不是紧急情况的原因。
刚开始从子域发送或进行电子邮件身份验证?从为什么 Mailer To Go 从 mtg.yourdomain.com 发送和 SPF/DKIM/DMARC 设置指南开始。从其他提供商迁移?请参阅从 Mailgun 迁移到 Mailer To Go。