如何通过exchangelib创建包含mime_content的邮件回复?
如何用exchangelib创建带
mime_content属性的邮件回复? 我使用exchangelib包连接EWS Exchange服务器,通过以下代码创建邮件回复:
msg = acc.inbox.all().order_by('-datetime_received')[-1] msg.reply_all("Re: Subject", "body of email")
但通过此方式创建的回复不具备mime_content属性,而我需要该属性来将邮件保存为.eml或.msg格式。原邮件对应的msg变量是包含mime_content属性的,请问是否有办法创建带有mime_content的邮件回复?
解决方案
方法1:发送后重新获取完整回复邮件
reply_all()方法返回的对象仅包含基础属性,不会自动携带mime_content。你可以先发送回复,再通过原邮件的conversation_id从已发送文件夹中查询对应的回复邮件,这样就能拿到包含完整属性的对象:
import time # 获取最新收件邮件 original_msg = acc.inbox.all().order_by('-datetime_received')[-1] # 发送回复 original_msg.reply_all("Re: Subject", "body of email") # 短暂等待Exchange同步(可选,视服务器情况调整) time.sleep(1) # 从已发送文件夹中查询同会话的最新回复 sent_reply = acc.sent.filter(conversation_id=original_msg.conversation_id).order_by('-datetime_sent')[0] # 保存为eml文件 with open('reply.eml', 'wb') as f: f.write(sent_reply.mime_content)
方法2:手动构建MIME回复再发送
如果不想依赖后续查询,也可以基于原邮件的MIME内容手动构建回复,再通过exchangelib发送,同时直接拿到MIME内容用于保存:
import email from email.mime.text import MIMEText from exchangelib import Message, Mailbox original_msg = acc.inbox.all().order_by('-datetime_received')[-1] # 解析原邮件的MIME内容 original_mime = email.message_from_bytes(original_msg.mime_content) # 构建回复的MIME结构 reply_mime = MIMEText("body of email", 'plain') reply_mime['Subject'] = f"Re: {original_mime['Subject']}" reply_mime['From'] = str(acc.me) # 优先用原邮件的Reply-To,没有则用发件人 reply_mime['To'] = original_mime.get('Reply-To', original_mime['From']) reply_mime['In-Reply-To'] = original_mime['Message-ID'] reply_mime['References'] = original_mime['Message-ID'] # 转换为bytes格式 reply_mime_bytes = reply_mime.as_bytes() # 创建并发送邮件 reply_msg = Message( account=acc, subject=reply_mime['Subject'], body=reply_mime.get_payload(), to_recipients=[Mailbox(email_address=addr.strip()) for addr in reply_mime['To'].split(',')] ) reply_msg.send() # 直接保存为eml文件 with open('manual_reply.eml', 'wb') as f: f.write(reply_mime_bytes)
注意事项
- 方法1中,Exchange服务器同步已发送邮件可能有延迟,必要时可增加等待时间或循环查询直到找到目标邮件。
- 方法2需要处理复杂收件人格式(比如带姓名的邮箱),可根据实际情况调整解析逻辑。
内容的提问来源于stack exchange,提问作者exik
相关产品推荐
相关产品推荐

