[英]How to Get 'Recipient' Names and emails address from Outlook using Python MAPI
就像.SenderName
为我提供可以轻松附加到列表中的发件人姓名一样,他们的任何 object 也可以为我的邮件的“收件人”做同样的事情。
我试过.Recipients
,但一旦添加到列表中,它们就会显示为COMObjects
无法操作的 COMObject。
我想要的只是一个简单的收件人姓名列表。
最简单的方法是
例子
import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.Folders["0m3r@Email.com"].Folders["Inbox"]
def get_email_address():
for message in inbox.Items:
print("========")
print("Subj: " + message.Subject)
print("Email Type: ", message.SenderEmailType)
if message.Class == 43:
try:
if message.SenderEmailType == "SMTP":
print("Name: ", message.SenderName)
print("Email Address: ", message.SenderEmailAddress)
print("Date: ", message.ReceivedTime)
elif message.SenderEmailType == "EX":
print("Name: ", message.SenderName)
print("Email Address: ", message.Sender.GetExchangeUser(
).PrimarySmtpAddress)
print("Date: ", message.ReceivedTime)
except Exception as e:
print(e)
continue
if __name__ == '__main__':
get_email_address()
MailItem.Recipients属性返回一个Recipients
集合,该集合表示 Outlook 项目的所有收件人。 例如,在 VBA 中,您可以使用以下内容:
Dim recip As Recipient
Dim allRecips As String
For Each recip In item.Recipients
If (Len(allRecips) > 0) Then allRecips = allRecips & "; "
allRecips = allRecips & recip.Address
Next
Outlook object model 适用于各种编程语言和应用程序。 因此,您可以使用相同的属性和方法调用来检索相同的结果。
Recipient class 的Type属性返回或设置一个 integer 表示收件人的类型。 对于 MailItem,该值可以是以下OlMailRecipientType常量之一:olBCC、olCC、olOriginator 或 olTo。
收件人 class 还提供以下属性:
Eugene Astafiev 分享的样本可能在某个时间点有效,但现在却没有。 连接到 Exchange 时的参数“.Address”现在会返回一个奇怪的字符串,而不是 email:
"/O=EXCHANGELABS/OU=EXCHANGE 管理组 (FYDIBOHF69SPDLT)/CN=RECIPIENTS/CN=537B0812B1FC48F78FBBEE417EC83959-您的姓名在这里"
.Address
属性仅返回非 Exchange 帐户的 email 地址。 对于 Exchange 帐户,它会返回那个奇怪的字符串。 要仅为 Exchange 和非 Exchange 账户提取 email 地址:
for x in message.Recipients:
try:
print(x.AddressEntry.GetExchangeUser().PrimarySmtpAddress)
except AttributeError:
print(x.AddressEntry.Address)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.