外观
3.3 发送验证
约 679 字
RSS邮件
本页对应「三、操作步骤」的 3.3,用自控测试邮箱完成一次真实发送,核对投递结果、正文渲染与链接可用性,再决定是否对订阅者开启。返回上级:RSS 与邮件分发。
前置条件
- 3.2 的模板已渲染通过,无残留占位符。
- 已准备两个分属不同邮件服务商的测试邮箱,且不在任何黑名单中。
- 发送凭据保存在权限 600 的环境文件中,例如
/srv/axis/.env,不写入代码仓库。 - 已确认测试邮箱能正常接收外部邮件,未被安全策略或白名单拦截。
- 发送凭据在环境中可读取且未过期,测试前用只读接口确认一次。
操作步骤
- 确认发件域的基础记录已就绪,再发起发送:
dig +short TXT example.com | grep -i spf
dig +short TXT _dmarc.example.com- 构造一封最小测试邮件并投递到第一个测试邮箱,记录返回的状态码:
curl -sS --user "no-reply@example.com:${MAIL_TOKEN}" \
--url "smtp://smtp.example.com:587" \
--mail-from "no-reply@example.com" \
--mail-rcpt "test-a@example.net" \
--upload-file /tmp/mail.eml \
-w "smtp_code=%{response_code}\n"- 对第二个邮箱重复发送,并把发送结果写入日志文件:
for rcpt in test-a@example.net test-b@example.org; do
code=$(curl -sS --user "no-reply@example.com:${MAIL_TOKEN}" \
--url "smtp://smtp.example.com:587" \
--mail-from "no-reply@example.com" \
--mail-rcpt "$rcpt" \
--upload-file /tmp/mail.eml \
-o /dev/null -w "%{response_code}")
echo "$(date '+%F %T') $rcpt $code" >> /srv/axis/logs/mail.log
done
tail -n 5 /srv/axis/logs/mail.log- 在两个邮箱中分别打开邮件,点击正文链接与退订链接,确认页面可访问。
结果确认
- 两封邮件均到达收件箱而非垃圾箱,发件人显示为预设名称。
- 日志中两个收件人的响应码为 250 类,没有 4xx 或 5xx。
- 正文标题、摘要与链接与模板一致,无乱码、无样式塌陷。
- 正文链接返回 200,退订链接能正常打开并携带令牌参数。
注意事项
- 测试邮件与正式群发使用不同凭据或子域,避免测试影响正式发送信誉。
- 同一收件人短时间内重复发送会被限流,验证间隔保持在分钟级。
- 邮件发出后无法撤回,群发前先确认模板版本号与目标名单。
- 判断到达以收件箱为准,接口返回 250 只代表对方服务器接收,不代表进入收件箱。
- 正式群发分批进行,先发小比例再观察退信与投诉,异常时立即停止后续批次。
- 发送凭据与模板分开管理,凭据泄露时只更换凭据,不必改动模板与订阅源。