一:需求背景
因为工作需要,每每有同类型的通知邮件都会储存在邮箱,然鹅~~一封邮件只有一条信息,正巧遇到 疫情(人类加油!!),一下子堆积了上千个邮件需要提取并且合并,主要是合并后做订单状态查询。 在网上找了很多资料基本都是EMAIL模块的,但是感觉是编码的问题还是怎样的最终没有用上
二:code
import email
import base64
import quopri
import openpyxl
import os
def Traverse(dir):#历遍文件夹文件
list=[]
for dirpath,dirnamesList,filenamesList in os.walk(dir):
for filename in filenamesList:
list.append(dirpath+"\\"+filename)
for dirname in dirnamesList:
list.append(dirpath+"\\"+dirname+"\\")
pass
return list;
pass#历遍文件夹文件
list=Traverse(dir)#参数为文件夹位置
# print(list)
def Excel(list):
wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = '邮件正文'
for i in list:
# print(i)
try:
fp = open(i,"r",encoding='utf-8')
msg = email.message_from_file(fp)
s=msg.get_payload(decode=False) # 解码出文本内容,直接输出来就可以了。
# print(s)
print ('+'*60) # 用来区别各个部分的输出
try:
a = quopri.decodestring(s).decode()
except :
a = base64.b64decode(s).decode()
sheet.append([a])
print(a)
except :
pass
wb.save('邮件正文.xlsx')
Excel(list)
以上哈哈哈哈~