Python Email对象属性修改无效,如何更新属性并重发邮件?
修改Python Email Message对象头部字段的正确方法
你之前尝试的mailobject.From = 'newvalue'和setattr方法是错误的——这些操作只是给对象添加了自定义属性,根本没改动邮件的头部内容。正确的做法是直接操作邮件对象的头部字典:
1. 修改From/To等标准头部字段
直接通过下标赋值即可替换原有值,若担心存在重复字段,可先删除再设置:
# 修改From字段 if 'From' in mailobject: del mailobject['From'] mailobject['From'] = 'newsender@email.com' # 修改To字段 if 'To' in mailobject: del mailobject['To'] mailobject['To'] = 'new_recipient@email.com'
2. 修改Return-Path字段
Return-Path属于特殊头部字段,同样用头部字典操作:
if 'Return-Path' in mailobject: del mailobject['Return-Path'] mailobject['Return-Path'] = 'return_address@email.com'
验证修改是否生效
修改后,通过mailobject['From']或mailobject.get('From')查看字段值,不要用mailobject.From——这只会获取你之前错误添加的对象属性,不是邮件头部的真实值。
重发邮件
修改完成后,用smtplib模块发送更新后的邮件对象即可:
import smtplib with smtplib.SMTP('你的SMTP服务器地址', 587) as server: server.starttls() server.login('你的邮箱账号', '邮箱密码/授权码') server.send_message(mailobject)
内容的提问来源于stack exchange,提问作者unninair
相关产品推荐
相关产品推荐

