如何将成员添加到现有的 Outlook 通讯组列表?

How to add a member to an existing Outlook Distribution List?

我正在尝试使用 Python 库 win32com 将成员添加到现有的 Outlook 分发列表。

使用以下代码删除现有成员没有任何问题:

import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

myDistributionList = outlook.Folders.Item(1).Folders[5].Items.Item('DL') # Number 5 because the DL is in the contacts folder

firstContact = myDistributionList.GetMember(1)

myDistributionList.RemoveMember(firstContact)

myDistributionList.Save()

阅读 VBA 文档,我了解到要使用通讯组列表的 AddMember 方法,我必须创建一个收件人对象。即使这样下面的代码也没有给出任何错误,好像它没有 运行。 Outlook 中的 DL 仍然是空的。

newContact = win32com.client.Dispatch("Outlook.Application").Session.CreateRecipient('example@gmail.com')

myDistributionList.AddMember(newContact)

myDistributionList.Save()

回答

好的,我已经解决了我自己的问题。我不知道这是否是最有效的方式,但它运行。

我必须创建两个不同的项目。邮件项和联系人项。然后我为联系人项目分配了一个地址,该地址被传递给邮件项目的 属性 收件人。最后我把这个收件人传给了DL。

myTempItem  = win32com.client.Dispatch("Outlook.Application").CreateItem(0) # Mail item

contact = win32com.client.Dispatch("Outlook.Application").CreateItem(2) # Contact item

contact.Email1Address = 'example@gmail.com'

myTempItem.Recipients.Add(contact.Email1Address)

myDistributionList.AddMembers(myTempItem.Recipients)

myDistributionList.Save()

# And if you want to see the contact group
myDistributionList.Display()