Vapor项目用SotoSESV2调用Amazon SES发送成功却未送达邮件?
SES V2 调用成功但邮件未送达的排查方向
你在Vapor项目中使用SotoSESV2调用sendEmail返回成功,但邮件长时间未送达且无退信记录,可从以下几个方向排查:
- 账户处于沙箱模式限制:AWS SES沙箱环境下,发件人和收件人都必须是经过验证的邮箱地址,未验证的地址会导致邮件被静默保留,不会实际投递。同时沙箱的发送量限制也可能导致邮件积压延迟。
- 邮件处于SES投递队列中:
sendEmail返回成功仅代表请求已被SES接收,并非立即完成投递。如果发送量突增或账户有异常记录,邮件可能会被放入待处理队列。可在SES控制台查看「发送统计」或「队列状态」确认是否有积压。 - 域名认证未完成:SPF、DKIM、DMARC这三项配置未正确设置时,收件人邮件系统可能会静默拦截邮件(不生成退信):
- 检查SPF记录是否包含SES的官方IP段或域名
- 确认DKIM密钥已在域名服务商处正确配置并生效
- 确保DMARC记录设置合理,测试阶段可设为
p=none避免误拦截
- 请求参数存在隐性问题:
- 核实
sendEmailRequest中Destination的收件人地址格式正确,无拼写错误 - 检查邮件主题、内容是否包含触发反垃圾规则的敏感词汇或违规话术
- 确认
FromEmailAddress与已验证的发件人域名完全匹配,避免被标记为伪造地址
- 核实
- 收件人邮件系统静默拦截:部分企业邮箱或服务商的反垃圾策略会直接拦截可疑邮件,不生成退信通知。可尝试更换不同域名的收件邮箱测试,比如用个人邮箱替代企业邮箱。
相关代码片段:
return ses.sendEmail(sendEmailRequest).flatMapAlways { re in print(re) fflush(stdout) switch re { case .success: print("Welcome message sent to: \(emailTo)") // 此处省略其他分支逻辑 } }
内容的提问来源于stack exchange,提问作者user19549035
相关产品推荐
相关产品推荐

