使用win32com在python中创建新的outlook交换服务器电子邮件



"Application.CreateItemFromTemplate"one_answers"Application.CCreateItem(("不起作用。我相信这与我运行Outlook Exchange Office 365而不是标准的Outlook会话有关。

我可以在邮箱中找到电子邮件并打开它们,但我找不到创建新电子邮件的方法。

我的代码:

import win32com.client
pythoncom.CoInitialize()
outlook = win32com.client.dynamic.Dispatch("Outlook.Application").GetNameSpace('MAPI')
inbox = outlook.GetDefaultFolder(6)
sentbox = outlook.GetDefaultFolder(5)
all_sentbox = sentbox.Items
all_inbox = inbox.Items
folders = inbox.Folders
tryopen = outlook.CreateItemFromTemplate(r'Documentsa.oft')

错误:

tryopen = outlook.CreateItemFromTemplate(r'Documentsa.oft')
File "C:UsersmePycharmProjectspythonProjectvenvlibsite-packageswin32comclientdynamic.py", line 639, in __getattr__
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.CreateItemFromTemplate

首先,调用CreateItemFromTemplate时需要指定绝对文件路径-Outlook是运行在Outlook.exe地址空间中的进程外COM库,因此其当前文件夹与您的应用程序不同。

其次,CreateItemFromTemplate是由Application对象暴露的,而不是由Namespace暴露的。您需要将win32com.client.dynamic.Dispatch("Outlook.Application")存储在一个单独的变量中,而不是将其用作调用Application.GetNameSpace('MAPI')的隐式变量。

为变量命名以反映其类型也是一个好主意——outlook可能更好地称为namespacens,而Dispatch("Outlook.Application")调用的返回值可以命名为applicationapp

相关内容

最新更新