在Gmail API中设置发件人名称且避免触发验证警告
解决方案:自定义发件人名称且避免Gmail验证警告
我之前也碰到过一模一样的问题!核心症结在于Gmail的发件人验证逻辑:当手动设置message['from']时,如果里面的邮箱地址和凭据配置文件里的发件人邮箱不匹配,或者格式不符合标准,Gmail就会触发验证警告。但只要我们正确设置From头,保证邮箱部分和凭据一致,同时保留自定义名称,就能两全其美。
具体修改步骤
1. 正确构造发件人参数
确保传入create_message函数的sender参数严格遵循以下格式:
"ABC NAME <abcname@gmail.com>"
这里的abcname@gmail.com必须和你凭据配置文件里的发件人邮箱完全一致;如果想用别名,得先在Gmail设置里添加并验证该别名。
2. 调整create_message函数
你不需要移除From字段,只需要确保它的格式正确且邮箱与凭据匹配。修改后的函数代码如下:
def create_message(sender, to, cc, subject, message_text): message = MIMEText(message_text,'html') message['to'] = to # 使用标准格式设置发件人,邮箱需与凭据完全一致 message['From'] = sender message['subject'] = subject if str(cc) != 'nan': message['cc'] = cc pprint(message) return { 'raw': base64.urlsafe_b64encode( bytes(message.as_string(), "utf-8")).decode("utf-8") }
注:MIME头大小写不敏感,message['from']和message['From']效果一致,但用大写更符合标准惯例。
为什么之前会触发警告?
你之前的警告大概率是以下两种情况之一:
- 设置的
message['from']里的邮箱和凭据里的发件人邮箱不一致; - 发件人格式错误,比如没用地括号
<>包裹邮箱地址(比如直接写ABC NAME abcname@gmail.com)。
当From头的邮箱部分和凭据完全匹配时,Gmail会识别出这是你主动设置的显示名称,而非伪造发件人,因此不会触发验证警告。
额外提示:使用别名的情况
如果想使用非主邮箱的别名作为发件人,需要先在Gmail设置中完成别名添加与验证(路径:Gmail设置 → 账号和导入 → 发送邮件为 → 添加另一个邮箱地址)。验证通过后,就可以用"自定义名称 <your-alias@domain.com>"作为sender参数,同样不会触发警告。
内容的提问来源于stack exchange,提问作者Manoj Singh
相关产品推荐
相关产品推荐

