網(wǎng)上資料同質(zhì)化嚴(yán)重腾啥,也嘗試了很多包,yagmail, zmail, exchanglib冯吓,大同小異倘待。以win32com為例,匯總?cè)缦隆?/p>
1组贺,發(fā)郵件
import win32com.client as win32
outlook = win32.Dispatch('Outlook.Application')
mail_item = outlook.CreateItem(0) # 0: creat mail
# 收件人繼續(xù)寫(xiě)下去
mail_item.Recipients.Add('xx@phfund.com.cn')
mail_item.Recipients.Add('yy@phfund.com.cn')
mail_item.Subject = 'Mail Test'
mail_item.BodyFormat = 2 # 2: Html format
mail_item.HTMLBody = '''
<H2>Hello, This is a test mail.</H2>
Hello Guys.
'''
# 附件繼續(xù)寫(xiě)下去
mail_item.Attachments.Add('C:\\Users\\xx\\Desktop\\慢慢慢.txt')
mail_item.Attachments.Add('C:\\Users\\xx\\Desktop\\慢慢慢.jpg')
mail_item.Attachments.Add('C:\\Users\\xx\\Desktop\\慢慢慢.xlsx')
mail_item.Send()
2凸舵,讀取郵件正文中的表格
這里的index是以1開(kāi)始,要跟python的索引區(qū)分開(kāi)
from win32com.client.gencache import EnsureDispatch as Dispatch
import pandas as pd
import datetime
from bs4 import BeautifulSoup
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI") #構(gòu)建實(shí)例
inbox = outlook.Folders["xx@phfund.com.cn"].Folders["收件箱"] #提取收件箱
Mail_Messages = inbox.Items #提取內(nèi)容
Mail_Messages.Sort("[ReceivedTime]", True) #按照接受日期排序
# 篩選目標(biāo)郵件
for mail in Mail_Messages: # 每個(gè)郵件進(jìn)行遍歷篩選
if hasattr(mail, 'SenderName'): # 如果有郵件sendername
if mail.SenderName == 'aa' and mail.ReceivedTime.date() > \
(datetime.datetime.now() - datetime.timedelta(days=7)).date() \
and '一對(duì)一' in mail.Subject: # 提取收件人失尖,收件時(shí)間啊奄,收件主題
break
# 篩選目標(biāo)郵件方法2
target_mail = Mail_Messages.Restrict("[SenderName]='aa' " )[1]
# Mail_Messages.restrict("[SentOn] > '5/31/2017 08:00 AM'")
a = Mail_Messages.Restrict("[ReceivedTime]>'05/31/2017'and [SenderName]='aa' " )
# 正文中有表格
mail_body = mail.HTMLBody
html_body = BeautifulSoup(mail_body,'html.parser')
html_tables = html_body.find_all('table')
df = pd.read_html(str(html_tables),header=0)[0]
3,讀取附件中文件
讀取附件要先下載下來(lái),再根據(jù)格式進(jìn)行讀取
target_mail = Mail_Messages.Restrict("[ReceivedTime]>'05/31/2017'and [SenderName]='xx' " )[1]
target_mail.Attachments[1].SaveAsFile('D:\\pycharm_code\\郵件讀取\\t.xlsx')
df = pd.read_excel('D:\\pycharm_code\\郵件讀取\\t.xlsx')
4掀潮,目前不足
- 1.在篩選目標(biāo)郵件中菇夸,尚不會(huì)用關(guān)鍵字過(guò)濾,嘗試過(guò)
.restrict([subject] contains 'xx')
和.restrict('xx' in [subject])
和.restrict([subject_contains] = 'xx')
- 2.附件要下下來(lái)再讀仪吧,不能直接讀取
有知道的歡迎私戳