python - 从 Python 修改 Microsoft Outlook 联系人

标签 python winapi outlook mapi

我过去编写了一些 Python 工具来从我的 Outlook 联系人中提取数据。现在,我正在尝试修改我的 Outlook 联系人。我发现 Outlook 注意到了我的更改,但它们没有保留。我似乎在更新一些缓存,但不是真正的记录。

代码很简单。

import win32com.client
import pywintypes

o = win32com.client.Dispatch("Outlook.Application")
ns = o.GetNamespace("MAPI")
profile = ns.Folders.Item("My Profile Name")
contacts = profile.Folders.Item("Contacts")
contact = contacts.Items[43] # Grab a random contact, for this example.
print "About to overwrite ",contact.FirstName, contact.LastName
contact.categories = 'Supplier' # Override the categories

# Edit: I don't always do these last steps.
ns = None 
o = None

此时,我切换到 Outlook,它打开了详细地址卡 View 。

我查看联系人摘要(没有打开),类别没有变化(没有刷新?)。

我打开联系人,它的类别已更改,有时。 (不确定什么时候,但感觉它与缓存相关。)如果它发生了变化,它会在我关闭它时提示我保存更改,这很奇怪,因为我没有在 Outlook UI 中更改任何内容。

如果我退出并重新启动 Outlook,更改就会消失。

怀疑我没有调用SaveChanges , 但我看不到哪个对象支持它。

所以我的问题是:

  • 我应该调用 SaveChanges 吗?如果有,它在哪里?
  • 我是否犯了其他愚蠢的错误,导致我的数据被丢弃?

最佳答案

我相信联系人上有一个 .Save() 方法,因此您需要添加:

联系.保存()

关于python - 从 Python 修改 Microsoft Outlook 联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/405724/

相关文章:

python - 在 openCV 和 python 中计算二值图像中的曲线、角度和直线

wpf - 如何构建一个 Windows 应用程序来拦截击键和鼠标点击并将其传递给其他应用程序?

c++ - 这个 CreateWindowEx 函数有什么问题?

azure - 如何使用 Azure 数据工厂复制事件提取电子邮件附件?

c# - vsto + 无法从 RTF 电子邮件中获取附件的文件名

python - 使用 PIL 在图像上添加文本

python - X[,y] 表示在 python 中是什么意思?

c - 如何访问 UNICODE_STRING 命令行变量?

打开 Outlook 并发送电子邮件的 PHP 代码

python - 了解 python 中的免费 OPC/UA 代码