背景
今天想要导出163邮箱的邮件和附件进行备份一下,手动导出的太麻烦。我之前导出过腾讯企业邮箱的邮件,相同的思路,也用Python导出到本地。
实现代码
import hashlib
import imaplib
import os
import email
from email.header import decode_header
from datetime import datetime
from imapclient import imap_utf7
def get_decoded_header(header: str) -> str:
try:
decoded_header = email.header.decode_header(header)
header_value, encoding = decoded_header[0]
if isinstance(header_value, bytes):
try:
if encoding and encoding.lower() != "unknown-8bit":
return header_value.decode(encoding)
else:
raise LookupError("unknown-8bit encoding")
except (UnicodeDecodeError, LookupError):
# 尝试使用备选编码进行解码
alt_encodings = ["gb18030", "gbk", "gb2312", "big5", "utf-8"]
for alt_encoding in alt_encodings:
try:
return header_value.decode(alt_encoding)
except UnicodeDecodeError:
continue
return header_value.decode("utf-8", errors="replace")
return header_value
except Exception as e:
print(f"Error while decoding header: {
e}")
return "Error_Decoding_Header"
def decode_folder_name(encoded_name):