"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
可能更好地称为namespace
或ns
,而Dispatch("Outlook.Application")
调用的返回值可以命名为application
或app
。