gpt4 book ai didi

python - 使用 win32 从 Python 中的 Outlook Exchange 中提取发件人的电子邮件地址

转载 作者:太空狗 更新时间:2023-10-30 00:27:48 27 4
gpt4 key购买 nike

我正在尝试使用 python 中的 win32 包从 outlook 2013 中提取发件人的电子邮件地址。我的收件箱中有两种电子邮件地址类型,exchange 和 smtp。如果我尝试打印 Exchange 类型的发件人电子邮件地址,我会得到:

/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP(FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=6F467C825619482293F429C0BDE6F1DB-

我已经完成了这个 link但找不到可以提取 smtp 地址的函数。

下面是我的代码:

from win32com.client import Dispatch
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder("6")
all_inbox = inbox.Items
folders = inbox.Folders
for msg in all_inbox:
print msg.SenderEmailAddress

目前所有的邮箱地址都是这样的:

/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP(FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=6F467C825619482293F429C0BDE6F1DB-

我在 VB.net 中找到了一个解决方案 link但不知道如何用 Python 重写同样的东西。

最佳答案

首先,如果文件夹中有 MailItem 以外的项目,例如 ReportItemMeetingItem 等,您的代码将失败。您需要检查 Class 属性是否为 43 (olMail)。

其次,您需要检查发件人电子邮件地址类型,并仅将 SenderEmailAddress 用于“SMTP”地址类型。在 VB 中:

 for each msg in all_inbox
if msg.Class = 43 Then
if msg.SenderEmailType = "EX" Then
print msg.Sender.GetExchangeUser().PrimarySmtpAddress
Else
print msg.SenderEmailAddress
End If
End If
next

关于python - 使用 win32 从 Python 中的 Outlook Exchange 中提取发件人的电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31619012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com