邮件服务配置指南:SendGrid 与 Mailgun 集成从入门到精通
无论是用户注册确认邮件、密码重置通知,还是营销推广邮件,可靠的邮件发送服务都是网站的必备基础设施。本文将详细介绍两款最流行的邮件服务——SendGrid 和 Mailgun 的配置方法。
为什么需要专业的邮件发送服务?
使用自己的服务器发送邮件存在以下问题:
- IP 信誉低:新服务器的 IP 容易被标记为垃圾邮件
- 送达率差:Gmail、Outlook 等邮箱对自建邮件服务器投递限制严格
- 运维复杂:需要维护 Postfix/Dovecot、反垃圾邮件配置
专业的邮件服务商提供:
- 高信誉的发送 IP 池
- 完善的 SPF/DKIM/DMARC 认证
- 实时送达率分析和日志
- 弹性扩展,从小规模到大规模无缝升级
一、SendGrid 配置指南
注册与 API 密钥
- 访问 SendGrid 官网 注册账户
- 免费套餐:每天 100 封(永久免费),适合小站点和开发测试
- 在 Settings → API Keys 创建 API Key,选择「Full Access」
SMTP 配置
# .env 配置
SENDGRID_API_KEY=SG.xxxxxxxxxxxxxxxxxxxx
[email protected]
SENDGRID_FROM_NAME=你的网站名称
// Node.js 使用 @sendgrid/mail
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
to: '[email protected]',
from: {
email: process.env.SENDGRID_FROM_EMAIL,
name: process.env.SENDGRID_FROM_NAME
},
subject: '欢迎注册!',
text: '感谢你的注册,请点击下方链接验证邮箱...',
html: '<p>感谢你的注册,请点击下方链接验证邮箱...</p>',
};
sgMail.send(msg).then(() => {
console.log('邮件发送成功');
}).catch(err => {
console.error('发送失败:', err);
});
域名认证
在 SendGrid Dashboard → Settings → Sender Authentication 添加你的域名:
# DNS 记录(在域名管理后台添加)
# SPF 记录
v=spf1 include:sendgrid.net ~all
# DKIM 记录(SendGrid 自动生成)
# 添加 CNAME 记录指向 SendGrid 提供的 DKIM 记录
# 域名验证(Domain Verification)
# 添加 CNAME 记录
二、Mailgun 配置指南
注册与域名设置
- 访问 Mailgun 官网 注册
- 免费套餐:前 3 个月每月 5000 封,之后每月 1000 封
- 在 Domains 页面添加你的发送域名
API 发送
# Python 使用 requests
import requests
def send_email_via_mailgun(to, subject, html_content):
return requests.post(
f"https://api.mailgun.net/v3/{YOUR_DOMAIN}/messages",
auth=("api", MAILGUN_API_KEY),
data={
"from": f"Your Site <noreply@{YOUR_DOMAIN}>",
"to": [to],
"subject": subject,
"html": html_content
})
// PHP 使用 Guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post("https://api.mailgun.net/v3/{YOUR_DOMAIN}/messages", [
'auth' => ['api', MAILGUN_API_KEY],
'form_params' => [
'from' => 'Your Site <[email protected]>',
'to' => '[email protected]',
'subject' => 'Hello from Mailgun',
'html' => '<h1>Hello!</h1><p>This is a test email.</p>',
]
]);
DNS 配置
Mailgun 会在域名设置页面给出需要添加的 DNS 记录:
# SPF 记录(允许 Mailgun 代表你的域名发件)
TXT @ v=spf1 include:mailgun.org ~all
# DKIM 记录(用于邮件签名验证)
TXT xxxxx._domainkey k=rsa; p=MIGfMA0GCSqGSIb3...
# MX 记录(处理回复邮件,可选)
MX mxa.mailgun.org 10
MX mxb.mailgun.org 10
# CNAME 记录(邮件跟踪,可选)
CNAME email mailgun.org
三、SPF、DKIM、DMARC 完全配置
这三个 DNS 记录是邮件送达率的核心保障。
SPF(发件人策略框架)
声明哪些服务器有权使用你的域名发送邮件:
v=spf1 include:sendgrid.net include:mailgun.org ~all
DKIM(域名密钥识别邮件)
添加数字签名,验证邮件未被篡改:
# DKIM 记录格式
[selector]._domainkey.[yourdomain.com] TXT "v=DKIM1; k=rsa; p=[public_key]"
DMARC(基于域名的消息认证报告)
定义收件方如何处理未通过 SPF/DKIM 验证的邮件:
_dmarc.[yourdomain.com] TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]"
DMARC 策略建议:
p=none:仅监控,不阻止(建议先用此模式收集数据)p=quarantine:可疑邮件放入垃圾箱p=reject:拒绝未通过验证的邮件
四、SendGrid vs Mailgun 对比
| 维度 | SendGrid | Mailgun |
|---|---|---|
| 免费额度 | 100 封/天 | 1000 封/月(首月 5000) |
| 超额价格 | $19.95/月(50K) | $35/月(50K) |
| API 风格 | RESTful,SDK 完善 | RESTful,SDK 完善 |
| 送达率 | 高(IP 信誉好) | 非常高(以高送达率闻名) |
| 分析面板 | 丰富,含点击/打开追踪 | 基础分析 |
| 模板引擎 | 支持动态模板 | 支持模板变量 |
| 适用规模 | 小型到大型 | 中型到超大型 |
五、常见排错指南
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 邮件进入垃圾箱 | SPF/DKIM 未配置或配置错误 | 检查 DNS 记录是否正确添加 |
| SMTP 连接超时 | 端口被防火墙阻止 | 使用 587(TLS)或 465(SSL)端口 |
| 发送被拒绝 | IP 信誉低或超过发送限制 | 预热 IP,检查 API 调用配额 |
| 收件人未收到 | 邮箱地址拼写错误 | 发送前验证邮箱格式 |
| 打开率低 | 邮件主题不吸引人 | A/B 测试邮件主题和内容 |
16IDC 观察
对于大多数中小网站,推荐使用 SendGrid 的免费套餐起步(每天 100 封足够覆盖初期需求)。当业务增长后,如果对送达率有更高要求,可以切换到 Mailgun。无论选择哪个平台,提前配置好 SPF、DKIM 和 DMARC 记录是确保邮件正常送达的关键一步。建议在网站上线前就完成邮件服务的配置和测试。