如何使用 python 打开 pst 文件(outlook 邮件文件)?
How can i open pst file (file of outlook mail ) with python?
我有 pst 文件,我想用 python 打开它,我该怎么做?
我尝试 this 库,但不起作用。
我的代码是:
import mailparser
mail = mailparser.parse_from_bytes(byte_mail)
mail = mailparser.parse_from_file('c/document/1.pst')
print(mail.attachments) #list of all attachments
但是得到这个错误:mailparser.exceptions.MailParserOSError: To use this function you must install 'msgconvert' tool
----------All error text:-----------------
To use this function you must install 'msgconvert' tool
Traceback (most recent call last):
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mailparser\utils.py", line 229, in msgconvert
stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1178, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
Traceback (most recent call last):
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mailparser\utils.py", line 229, in msgconvert
stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1178, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:/Drive D/my projects/azar/untitled java 13 12 2019/Pst mail.py", line 3, in <module>
mail=mailparser.parse_from_file_msg('C:/Users/aa/Documents/1.pst')
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mailparser\mailparser.py", line 89, in parse_from_file_msg
return MailParser.from_file_msg(fp)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mailparser\mailparser.py", line 203, in from_file_msg
f, _ = msgconvert(fp)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mailparser\utils.py", line 234, in msgconvert
raise MailParserOSError(message)
mailparser.exceptions.MailParserOSError: To use this function you must install 'msgconvert' tool
-----------------------------------
您只需要在 linux 环境中 运行 python 脚本。
您需要使用以下命令安装 Linux 软件包:
$ apt-get install libemail-outlook-message-perl
请仔细阅读下面的描述link:
https://pypi.org/project/mail-parser/
我的解决方法:
我将 .pst 文件转换为 .msg 文件并使用 python 读取它(使用应用程序:BitRecover PST Converter Wizard 10.6)。
import extract_msg
msg = extract_msg.Message("C:/Users/aa/Documents/delete/Untitled.msg")
print(msg.attachments)`
这个似乎有效,
https://pypi.org/project/libratom/
from libratom.lib.pff import PffArchive
from email import generator
from pathlib import Path
archive = PffArchive("bill_rapp_000_1_1.pst")
eml_out = Path(Path.cwd() / "emls")
if not eml_out.exists():
eml_out.mkdir()
print("Writing messages to .eml")
for folder in archive.folders():
if folder.get_number_of_sub_messages() != 0:
for message in folder.sub_messages:
name = message.subject.replace(" ", "_")
name = name.replace("/","-")
filename = eml_out / f"{message.identifier}_{name}.eml"
filename.write_text(archive.format_message(message))
print("Done!")
我有 pst 文件,我想用 python 打开它,我该怎么做?
我尝试 this 库,但不起作用。
我的代码是:
import mailparser
mail = mailparser.parse_from_bytes(byte_mail)
mail = mailparser.parse_from_file('c/document/1.pst')
print(mail.attachments) #list of all attachments
但是得到这个错误:mailparser.exceptions.MailParserOSError: To use this function you must install 'msgconvert' tool
----------All error text:-----------------
To use this function you must install 'msgconvert' tool
Traceback (most recent call last):
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mailparser\utils.py", line 229, in msgconvert
stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1178, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
Traceback (most recent call last):
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mailparser\utils.py", line 229, in msgconvert
stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1178, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:/Drive D/my projects/azar/untitled java 13 12 2019/Pst mail.py", line 3, in <module>
mail=mailparser.parse_from_file_msg('C:/Users/aa/Documents/1.pst')
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mailparser\mailparser.py", line 89, in parse_from_file_msg
return MailParser.from_file_msg(fp)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mailparser\mailparser.py", line 203, in from_file_msg
f, _ = msgconvert(fp)
File "C:\Users\aa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mailparser\utils.py", line 234, in msgconvert
raise MailParserOSError(message)
mailparser.exceptions.MailParserOSError: To use this function you must install 'msgconvert' tool
-----------------------------------
您只需要在 linux 环境中 运行 python 脚本。
您需要使用以下命令安装 Linux 软件包:
$ apt-get install libemail-outlook-message-perl
请仔细阅读下面的描述link: https://pypi.org/project/mail-parser/
我的解决方法: 我将 .pst 文件转换为 .msg 文件并使用 python 读取它(使用应用程序:BitRecover PST Converter Wizard 10.6)。
import extract_msg
msg = extract_msg.Message("C:/Users/aa/Documents/delete/Untitled.msg")
print(msg.attachments)`
这个似乎有效, https://pypi.org/project/libratom/
from libratom.lib.pff import PffArchive
from email import generator
from pathlib import Path
archive = PffArchive("bill_rapp_000_1_1.pst")
eml_out = Path(Path.cwd() / "emls")
if not eml_out.exists():
eml_out.mkdir()
print("Writing messages to .eml")
for folder in archive.folders():
if folder.get_number_of_sub_messages() != 0:
for message in folder.sub_messages:
name = message.subject.replace(" ", "_")
name = name.replace("/","-")
filename = eml_out / f"{message.identifier}_{name}.eml"
filename.write_text(archive.format_message(message))
print("Done!")