Python Outlook如何处理召回邮件

Python Outlook how to handle recall email

我的项目处理收件箱中的电子邮件。当进程收到“召回”电子邮件时,它会崩溃。召回电子邮件没有主题属性。我想写一些错误处理。我找不到将电子邮件移动到另一个文件夹或从 Outlook 中删除此类电子邮件的方法。

目前我的代码使用 GetPrevious() 方法跳过了这些项目,但电子邮件仍在收件箱中 您有什么想法可以让 'recall' 电子邮件从收件箱文件夹中消失吗?

    obj_emails = obj_inbox.Items
    obj_email = obj_emails.GetLast()

    if obj_email.MessageClass == 'IPM.Outlook.Recall':
        obj_email = obj_emails.GetPrevious()

Outlook 对象模型不提供任何用于处理或生成撤回项目的功能。您可以考虑使用 Outlook 所基于的 low-level API - Extended MAPI。您也可以考虑使用 thied-party 组件,即围绕 low-level API 的包装器,例如 Redemption。

尝试 MFCMAPI 以确保可以轻松处理(移动或移除)召回物品。

检查 Class 属性 - 所有 OOM 对象都公开它。对于 MailItem,它将是 43 (OlObjectClass.olMail)。对于 ReportItem - 46 (OlObjectClass.olReport)

感谢您的建议。 我不想使代码复杂化,所以我使用 MessageClass 属性 来捕获召回电子邮件。接下来的信息将发送给团队以删除此类电子邮件。

if obj_email.MessageClass == 'IPM.Outlook.Recall':
            raise Exception(f"There is a recall email in mailbox. Please remove it from inbox.")