使用Amazon SES发送邮件时,如何自定义发件人名称替换no-reply
如何在Amazon SES中自定义发件人名称
嘿,这个问题其实很好解决!你提到的X-SES-SOURCE-ARN只是用来指定SES验证过的身份ARN,和收件人看到的发件人名称完全没关系——真正控制显示名称的是邮件的From头字段。
核心解决思路
你只需要把邮件的From地址格式改成:
xxxx <no-reply@example.com>
这里的xxxx就是你想要的自定义发件人名称,<no-reply@example.com>是你已经验证过的SES身份邮箱(和你SOURCE ARN里的地址保持一致即可)。
不同发送方式的具体操作
1. 使用AWS SDK(以Python boto3为例)
如果是用SDK调用SES接口发送邮件,直接在Source参数里指定带名称的格式就行:
import boto3 ses_client = boto3.client('ses', region_name='us-west-2') response = ses_client.send_email( Source='xxxx <no-reply@example.com>', # 这里填入自定义名称+验证邮箱 Destination={ 'ToAddresses': ['recipient@example.com'] }, Message={ 'Subject': {'Data': '自定义发件人测试'}, 'Body': {'Text': {'Data': '这是一封带自定义发件人名称的测试邮件'}} }, # 保留原有的SOURCE ARN配置,无需修改 Headers={ 'X-SES-SOURCE-ARN': 'arn:aws:ses:us-west-2:123456789012:identity/no-reply@example.com' } )
2. 使用SMTP协议发送
如果是通过SMTP工具(比如PHPMailer、Postfix等)发送,直接在From字段里设置名称+邮箱即可。比如PHPMailer的示例:
$mail->setFrom('no-reply@example.com', 'xxxx');
这里第二个参数就是你要的自定义发件人名称。
注意事项
- 确保
no-reply@example.com已经在SES中完成身份验证(你已经有对应的SOURCE ARN,这一步应该没问题) - 自定义名称里尽量避免特殊字符,若需要使用空格或符号,大部分邮件客户端会自动处理编码,但保持简洁更稳妥
X-SES-SOURCE-ARN不需要修改,它的作用是关联你验证过的SES身份,防止未经授权的发送,和显示名称无关
内容的提问来源于stack exchange,提问作者Tamil Selvan
相关产品推荐
相关产品推荐

