python使用exchangelib读取、保存exchange邮件
import os
from datetime import datetime
import pytz
from exchangelib import Credentials, Account, Configuration, DELEGATE, Q, FileAttachment
def received_exchange_message():
"""
接收exchange邮件,保存邮件到本地
:return:
"""
# 创建连接
config = Configuration(
server='exchange.example.com', # Exchange Web Services URL
credentials=Credentials('domain\\username', 'password')
)
account = Account(
primary_smtp_address='your.email@example.com',
config=config,
autodiscover=False,
access_type=DELEGATE
)
# 设置时区
# tz = EWSTimeZone('Asia/Shanghai')
tz = pytz.timezone('Asia/Shanghai')
# 过滤收件箱中当天未读邮件,并按照多个主题过滤
today = datetime.now(tz).date()
start_of_day = tz.localize(datetime.combine(today, datetime.min.time()))
end_of_day = tz.localize(datetime.combine(today, datetime.max.time()))
subject_filter_1 = Q(subject__icontains='主题1')
subject_filter_2 = Q(subject__icontains='主题2')
unread_filter = Q(is_read=False) & Q(datetime_received__lte=end_of_day) & Q(datetime_received__gte=start_of_day) & (
subject_filter_1 | subject_filter_2)
unread_messages = account.inbox.filter(unread_filter)
save_path = 'C:\\attachments\\'
for message in unread_messages:
print(message.subject)
print(message.sender.email_address)
print(message.datetime_received.astimezone())
print(message.body)
for attachment in message.attachments:
if isinstance(attachment, FileAttachment):
# attachment.download(save_path)
# attachment.content_location
# print(f"Attachment saved: {os.path.join(save_path, attachment.name)}")
file_path = os.path.join(save_path, attachment.name)
with open(file_path, 'wb') as f:
f.write(attachment.content)
print(f"Attachment saved: {file_path}")
# 将邮件设置为已读
message.is_read = True
message.save()
print(f"Marked as read: {message.subject}")
# 保存邮件到本地,eml格式
for email in unread_messages:
# 注意保存时的主题特殊字符等情况的替换,否则会保存失败
with open(f'{email.subject}.eml', 'wb') as f:
f.write(email.mime_content)
本文来自博客园,仅供参考学习,如有不当之处还望不吝赐教,不胜感激!转载请注明原文链接:https://www.cnblogs.com/rong-z/p/17414923.html
作者:cnblogs用户
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人