com_error 使用 python 在 windows outlook 中保存电子邮件时
com_error when saving emails in windows outlook with python
我正在使用 python 将电子邮件保存在指定的文件夹中并完成以下操作:
- 检查邮件是否未读
- 将电子邮件保存到目标文件夹
- 将邮件标记为已读
- 告诉我存档了多少邮件和位置
代码:
from win32com.client import Dispatch
import os
outlook = Dispatch('outlook.application').GetNamespace("MAPI")
root = outlook.Folders[0].Folders[27]
targetPath = os.path.expanduser(r'\path\to\target\folder')
messages = root.Items
count = 0
for msg in messages:
if msg.UnRead:
msg.SaveAs(os.path.join(targetPath))
msg.UnRead = False
count +=1
print(str(count)+' emails archived to: '+targetPath)
我最终遇到了这个我以前从未见过的错误,而且我在 google 机器上没有任何运气......所以我来到 Whosebug 并将你从沉睡中唤醒。
Traceback (most recent call last):
File "C:\Users\e582324\Documents\Python Scripts\untitled6.py", line 18, in <module>
msg.SaveAs(os.path.join(targetPath))
File "<COMObject <unknown>>", line 3, in SaveAs
com_error: (-2147352567, 'Exception occurred.', (4096, 'Microsoft Outlook', 'The operation failed.', None, 0, -2147024829), None)
知道是什么原因造成的吗?我有一个类似的脚本,它只保存附件并且工作正常。我的目标文件夹位于两个脚本的网络共享驱动器上,直到现在才出现问题。唯一真正的区别是使用 .SaveAs() 而不是 .SaveAsFile()
您需要指定文件名及其扩展名。有时仅传递路径是不够的,尤其是当您未指定格式时(请参阅第二个参数)。请注意,Outlook 文件夹可能包含不同类型的项目 - 邮件项目、约会、文档、便笺等。例如,这里有一个示例:
Item.SaveAs Environ("HOMEPATH") & "\My Documents\" & strname & ".txt", olTXT
我还注意到您正在遍历文件夹中的所有项目:
for msg in messages:
if msg.UnRead:
相反,您需要使用 Items
class 的 Find
/FindNext
或 Restrict
方法。因此,您只会获得与您的条件相对应的项目,并且只会对它们进行迭代。在以下文章中阅读有关这些方法的更多信息:
我正在使用 python 将电子邮件保存在指定的文件夹中并完成以下操作:
- 检查邮件是否未读
- 将电子邮件保存到目标文件夹
- 将邮件标记为已读
- 告诉我存档了多少邮件和位置
代码:
from win32com.client import Dispatch
import os
outlook = Dispatch('outlook.application').GetNamespace("MAPI")
root = outlook.Folders[0].Folders[27]
targetPath = os.path.expanduser(r'\path\to\target\folder')
messages = root.Items
count = 0
for msg in messages:
if msg.UnRead:
msg.SaveAs(os.path.join(targetPath))
msg.UnRead = False
count +=1
print(str(count)+' emails archived to: '+targetPath)
我最终遇到了这个我以前从未见过的错误,而且我在 google 机器上没有任何运气......所以我来到 Whosebug 并将你从沉睡中唤醒。
Traceback (most recent call last):
File "C:\Users\e582324\Documents\Python Scripts\untitled6.py", line 18, in <module>
msg.SaveAs(os.path.join(targetPath))
File "<COMObject <unknown>>", line 3, in SaveAs
com_error: (-2147352567, 'Exception occurred.', (4096, 'Microsoft Outlook', 'The operation failed.', None, 0, -2147024829), None)
知道是什么原因造成的吗?我有一个类似的脚本,它只保存附件并且工作正常。我的目标文件夹位于两个脚本的网络共享驱动器上,直到现在才出现问题。唯一真正的区别是使用 .SaveAs() 而不是 .SaveAsFile()
您需要指定文件名及其扩展名。有时仅传递路径是不够的,尤其是当您未指定格式时(请参阅第二个参数)。请注意,Outlook 文件夹可能包含不同类型的项目 - 邮件项目、约会、文档、便笺等。例如,这里有一个示例:
Item.SaveAs Environ("HOMEPATH") & "\My Documents\" & strname & ".txt", olTXT
我还注意到您正在遍历文件夹中的所有项目:
for msg in messages:
if msg.UnRead:
相反,您需要使用 Items
class 的 Find
/FindNext
或 Restrict
方法。因此,您只会获得与您的条件相对应的项目,并且只会对它们进行迭代。在以下文章中阅读有关这些方法的更多信息: