Python:如何从Outlook中获取自己的电子邮件地址?

pobjuy32  于 2022-12-28  发布在  Python
关注(0)|答案(2)|浏览(230)

我尝试从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

有谁能告诉我,这是怎么回事?

xxhby3vn

xxhby3vn1#

我是这样解决这个问题的:

import win32com.client as win32
...
...
self.outlook   = win32.gencache.EnsureDispatch('outlook.application')
self.item      = self.outlook.CreateItem(0)
self.myAddress  = self.item.Session.CurrentUser.Address

self.myAddress现在存储我的电子邮件地址。
不管您是使用大写还是小写
(“展望应用程序”)
我两个都试过了,得到的都是一样的。
如果这个解决方案不好或者会产生任何问题,请让我知道。目前它对我有效。谢谢

xe55xuns

xe55xuns2#

尝试使用Logon方法或在代码中获取用户的电子邮件地址之前获取Inbox文件夹。
当Outlook尚未运行时,只能使用Logon方法登录到特定的配置文件。这是因为一次只能运行一个Outlook进程,并且该Outlook进程仅使用一个配置文件,并且仅支持一个MAPI会话。当用户第二次启动Outlook时,Outlook的该示例在同一Outlook进程中运行,不创建新进程,并且使用同一配置文件。
如果Outlook未运行,而您只想使用默认配置文件启动Outlook,则不要使用Logon方法。更好的替代方法是首先示例化Outlook应用程序对象,然后引用默认文件夹(如收件箱)。这会产生副作用,即初始化MAPI以使用默认配置文件并使对象模型完全正常工作。
另外,我不确定这是否有任何区别,但其他示例使用大写符号,如以下代码片段所示:

import win32com.client as client
outlook = client.Dispatch("Outlook.Application")

相关问题