我尝试从Outlook中获取用户的电子邮件地址与Python,但我总是得到这个错误:
File "C:\Users\me\Documents\Coding\Python_Projects\TEST\mainLogin.py", line 76, in __init__
self.myAdress = self.outlook.Session.CurrentUser.Address
File "C:\Users\me\AppData\Local\Programs\Python\Python39\lib\site-packages\win32com\client\__init__.py", line 485, in __getattr__
return self._ApplyTypes_(*args) File "C:\Users\me\AppData\Local\Programs\Python\Python39\lib\site-packages\win32com\client\__init__.py", line 478, in _ApplyTypes_
self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args), pywintypes.com_error: (-2147467260, 'Vorgang abgebrochen', None, None)
我用下面的代码试试看:
import win32com.client as win32
...
...
self.outlook = win32.gencache.EnsureDispatch('outlook.application')
self.myAdress = self.outlook.Session.CurrentUser.Address
有谁能告诉我,这是怎么回事?
2条答案
按热度按时间xxhby3vn1#
我是这样解决这个问题的:
self.myAddress现在存储我的电子邮件地址。
不管您是使用大写还是小写
(“展望应用程序”)
我两个都试过了,得到的都是一样的。
如果这个解决方案不好或者会产生任何问题,请让我知道。目前它对我有效。谢谢
xe55xuns2#
尝试使用Logon方法或在代码中获取用户的电子邮件地址之前获取Inbox文件夹。
当Outlook尚未运行时,只能使用Logon方法登录到特定的配置文件。这是因为一次只能运行一个Outlook进程,并且该Outlook进程仅使用一个配置文件,并且仅支持一个MAPI会话。当用户第二次启动Outlook时,Outlook的该示例在同一Outlook进程中运行,不创建新进程,并且使用同一配置文件。
如果Outlook未运行,而您只想使用默认配置文件启动Outlook,则不要使用Logon方法。更好的替代方法是首先示例化Outlook应用程序对象,然后引用默认文件夹(如收件箱)。这会产生副作用,即初始化MAPI以使用默认配置文件并使对象模型完全正常工作。
另外,我不确定这是否有任何区别,但其他示例使用大写符号,如以下代码片段所示: