如何使用python 3.9将.msg outlook文件转换为.txt文件?

2024-09-27 21:26:02 发布

您现在位置:Python中文网/ 问答频道 /正文

请帮助一个python初学者走出困境!我会非常感激的

我正在尝试自动过滤收件箱中的电子邮件,并将其保存为指定文件夹中的文本文档。我可以将文件夹中的电子邮件保存为.msg没有问题,但是,当我尝试将其保存为.txt文件时,它要么a)在删除“olTXT”时无法正常打开,要么b)在添加“olTXT”时抛出以下错误:

line 19, in <module>
message.SaveAs(os.getcwd()+'//'+name, olTXT)
NameError: name 'olTXT' is not defined

我使用https://docs.microsoft.com/en-us/office/vba/api/outlook.mailitem.saveas作为我的参考

这就是我到目前为止所做的:

import win32com.client
from win32com.client import Dispatch
import os
import re

outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.items
message = messages.GetFirst()

report_subject = "Tech Report"

for message in messages:
    if message.subject[0:11] == report_subject:
        name = str(message.subject)
        #to eliminate any special charecters in the name
        name = re.sub('[^A-Za-z0-9]+', '', name)+'.txt'
        #to save in the current working directory
        message.SaveAs(os.getcwd()+'//'+name, olTXT)

Tags: nameinimporttxt文件夹messageos电子邮件
2条回答

尝试添加以下内容:

OlSaveAsType = {
    "olTXT": 0,
    "olRTF": 1,
    "olTemplate": 2,
    "olMSG": 3,
    "olDoc": 4,
    "olHTML": 5,
    "olVCard": 6,
    "olVCal": 7,
    "olICal": 8
}

# example
message.SaveAs(os.getcwd()+'//'+name, OlSaveAsType['olTXT'])

参考:Outlook.OlSaveAsType.olMSG

按照现在的方式,在分配变量之前,您正在引用变量olTXT,这就是您收到错误的原因

olTxt是0(olMsg是3,等等):

message.SaveAs(os.getcwd()+'//'+name, 0)

相关问题 更多 >

    热门问题