gpt4 book ai didi

python - 尝试通过 pythonCOM 从 Outlook 中保存附件

转载 作者:行者123 更新时间:2023-11-28 22:49:36 26 4
gpt4 key购买 nike

我正在查看我的 outlook 邮件以获取所有附件并将它们保存在我的计算机中。

这是我的代码:

import win32com.client
import os, sys

class OutlookLib:

def __init__(self, settings={}):
self.settings = settings

# Gets all messages in outlook
def get_messages(self):
outlook = win32com.client.Dispatch("Outlook.Application")

# This allows us to access the "folder" hierarchy accessible within
# Outlook. You can see this hierarchy yourself by opening Outlook
# manually and bringing up the folder menu
# (which typically says "Inbox" or "Outlook Today" or something).
ns = outlook.GetNamespace("MAPI")

all_inbox = ns.GetDefaultFolder(6).Items
return all_inbox

def get_body(self, msg):
return msg.Body

def get_subject(self, msg):
return msg.Subject

def get_sender(self, msg):
return msg.SenderName

def get_recipient(self, msg):
return msg.To

def get_attachments(self, msg):
return msg.Attachments

# Gets an attachment
# Return true if clean
# Otherwise, return false
def checkAttach(fileAtt):
pass # TODO something here

def Main():
global attach

outlook = OutlookLib()
messages = outlook.get_messages()

# Loop all messages
msg = messages.GetFirst()
while msg:
#print msg.Subject
if not len(msg.Attachments) is 0:
attach.append((msg.Attachments, msg.Subject))
msg = messages.GetNext()

for attachTuple in attach:
print "Checking attachments under " + attachTuple[1]
for fileAtt in attachTuple[0]:
fileAtt.SaveAsFile(r"C:\Users\Lidor\Desktop\Dina\scan-mail")
if checkAttach(fileAtt):
print fileAtt.FileName + " was found as malicous."

attach = []

if __name__ == "__main__":
Main()

现在这是我得到的错误:

Traceback (most recent call last):
File "C:\Users\Lidor\Desktop\Dina\scan-mail\mailScanner.py", line 67, in <module>
Main()
File "C:\Users\Lidor\Desktop\Dina\scan-mail\mailScanner.py", line 60, in Main
fileAtt.SaveAsFile(r"C:\Users\Lidor\Desktop")
File "<COMObject <unknown>>", line 2, in SaveAsFile
com_error: (-2147352567, 'Exception occurred.', (4096, u'Microsoft Outlook', u"Cannot save the attachment. You don't have appropriate permission to perform this operation.", None, 0, -2147024891), None)

这很奇怪,因为我是管理员并且我拥有 pst 和输出文件夹的权限。我也尝试在管理员 CMD 中运行它,但仍然出现相同的错误。

顺便说一句,如果您知道一种将附件放入 python 文件对象而不是将其保存到我的计算机的方法,那就更好了。

谢谢。

最佳答案

您必须指定完整的附件文件名,包括名称部分。你只是指定了目录名,你需要连接目录和文件名:

fileAtt.SaveAsFile(r"C:\Users\Lidor\Desktop\Dina\scan-mail\" + fileAtt.FileName)

关于python - 尝试通过 pythonCOM 从 Outlook 中保存附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23638963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com