【问题标题】:How to save attachment from outlook using win32com.client in Python?如何在 Python 中使用 win32com.client 从 Outlook 中保存附件?
【发布时间】:2014-04-19 10:32:46
【问题描述】:

我正在尝试使用 Python 中的 win32com 模块阅读电子邮件并将附件下载到我自己的文件夹中,但我停止获取附件对象:

from win32com.client import Dispatch
import datetime as date

outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder("6")
all_inbox = inbox.Items
val_date = date.date.today()

sub_today = 'Hi'
att_today = 'Attachment.xlsx'
for msg in all_inbox:
    if msg.Subject == sub_today:
        break

for att in msg.Attachments:
    if att.FileName == att_today:
        break

att.SaveAsFile('new.xlsx')
att.ExtractFile('new.xlsx')
open(att)    
att.WriteToFile('x')

最后 4 行都不起作用...

>>> att.ExtractFile('new.xlsx')
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.ExtractFile

>>> open(att) 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: coercing to Unicode: need string or buffer, instance found

>>> att.WriteToFile('x')
 raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.WriteToFile

att.SaveAsFile('new.xlsx')没有错误,但是工作目录下没有这个文件。似乎该行被忽略了...

有人可以帮忙吗?提前致谢!

【问题讨论】:

  • 你现在应该可以接受你的答案了 :)。
  • 你能在这里发布你完整的解析代码吗?我正在尝试对您的代码执行相同的操作,并且遇到了同样的问题。

标签: python email outlook win32com


【解决方案1】:

为了更新,我通过在 SaveAsFile 中声明 dir 和文件名本身解决了这个问题:

att.SaveAsFile(os.getcwd() + '\\new.xlsx')

这不像我在这里看到的大多数线程都说你只需要在其中放置路径。实际上路径和文件名都是需要的。

另外,奇怪的是,你必须把 os.getcwd() 放在这里,因为 Python 无法识别当前正在运行的 dir - 在 R 中,在我们将工作 dir 设置为 getwd() 之后,我们可以写入任何文件在这个位置。

【讨论】:

  • “完整路径”一词非常常见的用法是暗示“包括文件名的完整路径规范”。你看到的线程可能是正确的。 :-)
【解决方案2】:

认为当前工作目录在哪里?我会说您正在查看错误的文件夹,SaveAsFile 通常工作得很好。

只需将完整路径传递给SaveAsFile,即可解决您的问题。

【讨论】:

  • 谢谢我终于通过宣布目录和文件名解决了这个问题:att.SaveAsFile(os.getcwd() + '\\new.xlsx')
【解决方案3】:

如果您只想保存附件,请将最后 3 行注释掉,并将整个目录写入最后 4 行以保存在特定位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2022-01-17
    • 2021-09-22
    • 2022-12-05
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多