如何解决Python 保存 Outlook 中的附件
我正在尝试自动化一些 python 代码,这些代码会自动保存来自具有特定标题的某些电子邮件的一些附件。
以下是我目前拥有的:
import win32com.client as client
outlook = client.Dispatch('Outlook.Application')
namespace = outlook.GetNameSpace('MAPI')
inbox = namespace.GetDefaultFolder(6)
target_subject = 'Testing attachment'
mail_items = [item for item in inbox.Items if item.Class == 43]
filtered = [item for item in mail_items if item.Subject == target_subject]
if len(filtered) != 0:
target_email = filtered[0]
if target_email.Attachments.Count > 0:
attachments = target_email.Attachments
save_path = 'C:'
for file in attachments:
file.SaveAsFile(save_path.format(file.FileName))
但是我似乎遇到了权限错误?
com_error: (-2147352567,'Exception occurred.',(4096,'Microsoft Outlook',"Cannot save the attachment. You don't have appropriate permission to perform this operation.",None,-2147024891),None)
不知道如何解决这个问题,我是管理员等
我还想知道实际在线部署并运行它需要哪些更改,即我没有传递任何凭据,因为它是本地的,如果独立运行,我希望它每 7 天访问一次我的收件箱或所以并从此特定电子邮件下载此特定附件。
任何帮助将不胜感激。
谢谢!
解决方法
选择另一个驱动器或文件夹,例如,My Documents
不需要管理员权限进行写入。否则,如果您想向系统驱动器 (C:) 写入任何内容,则必须以管理员权限运行 Outlook。
我还注意到以下几行代码:
mail_items = [item for item in inbox.Items if item.Class == 43]
filtered = [item for item in mail_items if item.Subject == target_subject]
遍历文件夹中的所有项目并不是一个好主意,而且,您要这样做两次!
我建议使用 Items 类的 Find
/FindNextor
Restrict` 方法,该方法只允许获取符合指定条件的项目。在以下文章中详细了解这些方法:
- How To: Use Find and FindNext methods to retrieve Outlook mail items from a folder (C#,VB.NET)
- How To: Use Restrict method to retrieve Outlook mail items from a folder
默认情况下,用户没有对根驱动器 (C:) 的写访问权限。
将其更改为类似 'c:\temp\'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。