Python Win32Com Outlook,无法检索发件人信息。

3
我正在使用win32com.client与Outlook进行交互。我已经成功地检索到了邮件的正文和主题。
我的代码是基于以下帖子编写的:Clearly documented reading of emails functionality with python win32com outlook 然而,我只能获取bodysubject,其他任何东西都会返回<COMObject <unknown>>或以下错误。
Traceback (most recent call last):
  File "C:/Users/xx/PycharmProjects/email_crawler/email_crawler.py", line 62, in <module>
    main()
  File "C:/Users/xx/PycharmProjects/email_crawler/email_crawler.py", line 56, in main
    retrieve_messages(outlook)
  File "C:/Users/xx/PycharmProjects/email_crawler/email_crawler.py", line 51, in retrieve_messages
    print(message.Sender)
  File "C:\Users\xx\PycharmProjects\email_crawler\venv\lib\site-packages\win32com\client\dynamic.py", line 527, in __getattr__
    raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.Sender

这是我的代码。

def get_outlook():
        """
        :return: creates an instance of outlook and returns it.
        """
        outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
        return outlook


def retrieve_messages(outlook):
    """
    Retrieves messages from the inbox and returns a list.
    :param outlook: Instance of an outlook account
    :return:
    """
    inbox = outlook.GetDefaultFolder(6)
    messages = inbox.Items
    for message in messages:
        print(message.Sender)


def main():
    outlook = get_outlook()
    retrieve_messages(outlook)


if __name__ == "__main__":
main()

1
在之前的项目中,我使用message.Sender无法获取发件人信息。相反,我使用 message.SenderName 获取他们的姓名和 message.SenderEmailAddress 获取其电子邮件地址。我还建议对发件人名称使用unidecode包,因为有些人的名称中可能带有特殊字符:unidecode(message.SenderName)。此外,附上一个文档关于MailItem属性。 - Scratch'N'Purr
1个回答

1

发送者确实是一个COM对象,而不是一个字符串。它有像NameAddress这样的属性。请记住,您收件箱中的并非所有项目都是MailItem对象-您还可以拥有MeetingItemReportItem对象。如果您只想要MailItem对象,请检查Class属性= 43(OlObjectClass.olMail)


抱歉,我对这些东西还比较新。我该如何检查class property是否为43?我尝试了Sender.Name.Sender.Address,但它们都返回相同的属性错误。 - cyberbemon
检查 MailItem 类:if message.Class == 43 - Rami Sedhom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接