You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS SES SendRawEmail报Missing required header 'To':Mac正常CI及Linux异常求解决

AWS SES SendRawEmail报错"Missing required header 'To'":Mac正常但Linux/CI失败的解决思路

问题场景

编写了用于内部构建流程发邮件的脚本,在Mac本地运行完全正常,但部署到CI环境或Linux服务器上执行时,调用AWS SES的SendRawEmail操作抛出错误:

An error occurred (InvalidParameterValue) when calling the SendRawEmail operation: Missing required header 'To'.

核心原因

Mac系统默认换行符是CR(\r),而Linux/CI环境默认是LF(\n),但邮件标准要求邮件头必须用CRLF(\r\n)作为换行分隔符。脚本在生成原始邮件内容时,若依赖系统默认换行符,会导致Linux环境下生成的邮件头格式不符合标准,AWS SES无法正确解析出To头。

解决方案

1. 强制使用CRLF构建邮件内容

在脚本拼接邮件头和正文时,明确指定用\r\n作为换行符,不依赖系统默认设置。以Python为例:

# 构建符合标准的原始邮件内容
raw_email_content = (
    f"To: {recipient_email}\r\n"
    f"From: {sender_email}\r\n"
    f"Subject: Build Notification\r\n"
    "\r\n"  # 邮件头与正文的分隔线
    f"Build completed with status: {build_status}\r\n"
)

2. 处理模板文件的换行符

如果是从文件读取邮件模板,读取后统一将换行符替换为CRLF:

with open("email_template.txt", "r", encoding="utf-8") as template_file:
    template_content = template_file.read().replace("\n", "\r\n")
# 替换模板变量后直接使用
final_email = template_content.format(recipient="xxx", status="success")

3. 验证原始邮件格式

在Linux环境下生成邮件内容后,可通过打印或写入文件检查格式,确保每一行邮件头都以\r\n结尾,避免出现纯LF的情况。

内容的提问来源于stack exchange,提问作者darrin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 23:17:04