【问题标题】:How to filter outlook mails on a subject using Python and win32com.client?如何使用 Python 和 win32com.client 过滤主题上的 Outlook 邮件?
【发布时间】:2018-04-07 03:16:15
【问题描述】:

我试图从 Outlook 下载满足特定主题的附件,但我遇到了一个异常,不知道如何从下面更正我的代码是我的代码:

import win32com.client
import os
get_path = os.getcwd()
outlook = win32com.client.Dispatch("Outlook.Application").GetNameSpace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
message2 = messages.GetLast()
subject = message2.Subject
body = message2.body
sender = message2.Sender
attachments = message2.Attachments
for m in messages:
    if m.Subject == "Test Mail":
        for x in message2.Attachments:
            x.SaveASFile(os.path.join(get_path,x.FileName))
            print "successfully downloaded attachments"

这就是问题所在:

Traceback (most recent call last):
  File "C:/Users/LENOVO USER/PycharmProjects/FlaskProject/EmailFilter/TestFile.py", line 4, in <module>
    outlook = win32com.client.Dispatch("Outlook.Application").GetNameSpace("MAPI")
  File "C:\Python27\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221005, 'Invalid class string', None, None)

【问题讨论】:

    标签: python outlook attachment win32com


    【解决方案1】:

    正如回溯所示,错误出现在您定义outlook 的行。实际上,GetNamespace 中没有 cap S,所以将这一行替换为:

    outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
    

    但出现其他错误,在定义body的行,属性必须有一个上限,例如body = message2.Body,而x.SaveASFile中的另一个上限问题,应该是x.SaveAsFile

    最后,当您尝试下载 message2 的附件时,我不确定您的代码是否会按照您的描述进行,这是您的最后一条消息,而您遍历 messages,我不明白这一点那么。

    如果您需要更多帮助或我误解了您的问题,请告诉我。

    【讨论】:

    • 我做了更改,但pywin错误仍然存​​在,
    • 我想要的是:我想下载所有相同主题的附件,说“测试邮件”并且在当天到过去 3 天的时间间隔内
    • 我的错误,我读得太快了你的回溯,当我得到我纠正的错误时,我认为这是给你的,根据this这可能是因为你的上没有安装outlook计算机,或者Dispatch 无法创建 Outlook 实例。
    • 那我现在该怎么办
    • 我在我的系统上安装了 Outlook,而且我有一些以“测试邮件”为主题并有多个 csv 文件作为附件的电子邮件,我正在尝试下载这些附件
    猜你喜欢
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多