You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选带附件的未读Outlook邮件并写入DataFrame?代码返回空表

问题分析与修正代码

原代码返回空DataFrame的核心问题有三个:

  • 附件判断逻辑错误:mail.Attachments是Outlook的附件集合对象,不能直接用== True判断是否存在附件,需通过Attachments.Count > 0来验证
  • 未读状态修改错误:mail.UnRead == False是比较操作,不是赋值,无法将邮件标记为已读,应改为mail.UnRead = False
  • 数据结构设计错误:直接将body和subject分别追加到列表,会生成扁平的一维列表,转换后的DataFrame无法区分每个邮件的主题和内容,需按邮件维度存储数据

修正后的代码:

import pandas as pd

contents = []

for mail in message:
    # 正确判断未读且带有附件
    if mail.UnRead and mail.Attachments.Count > 0:
        # 按邮件维度存储主题和内容,用字典更清晰
        mail_data = {
            "Subject": mail.Subject,
            "Body": mail.body
        }
        contents.append(mail_data)
        # 正确标记为已读
        mail.UnRead = False

# 转换为DataFrame,自动生成列
df = pd.DataFrame(contents)

额外优化说明

如果message对象还没做前置过滤,可以通过Outlook的Restrict方法提前筛选未读邮件,提升遍历效率:

# 假设已获取Outlook收件箱文件夹对象inbox
unread_messages = inbox.Restrict("[UnRead] = True")
for mail in unread_messages:
    if mail.Attachments.Count > 0:
        # 后续逻辑同上
        mail_data = {
            "Subject": mail.Subject,
            "Body": mail.body
        }
        contents.append(mail_data)
        mail.UnRead = False

df = pd.DataFrame(contents)

内容的提问来源于stack exchange,提问作者selereth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 10:45:34