python-發送郵件
這里事清安,我們跑完自動化腳本后,是不是想一氣呵成把郵件一起發了?完成一次華麗的真自動化。
zmail操作
1. 導包 import zmail
2. 郵件內容,包含:主題(subject)、正文(content_text)、附件(attachments)
3. 發件人信息,包含:發件人賬號,密碼(授權碼)
4. 發送郵件,包含:收件人地址,郵件內容
5. 群發郵件,收件人地址寫在一個列表中,多個收件人以逗號分隔開
純文字發送:
import zmail #郵件內容,主題subject內容content_text,不能隨意定義 msg = { 'subject':'郵件主題:小姐姐的信息', 'content_text':'身高172,大長腿,顏值高。。。' } #發件人,授權碼 sender = ('123456798@qq.com','dfddfdfdfggrgrgc') #收件人 reciver = '123456789@163.com' #群發形式,這里列表不支持改成元組 #reciver = ['123465789@163.com','12345678@qq.com'] # 登錄,索引值賬號、密碼 sender = zmail.server(sender[0],sender[1])#(*sender)也叫解包,自動填充 # 發送郵件,發動到哪個郵件,以及發送內容 sender.send_mail(reciver,msg) 復制代碼
需要值得注意的是,這里的操作很簡單,msg是一個字典變量,我們自己設定的,但是 里面的鍵是不能夠改變的,是這個庫內部規定的,其他的變量名可以隨意的取,這里的sender是你的賬號加上授權碼。
也可以進行群發哦,但是需要是列表形式的。
這里說一下授權碼怎么弄,在你郵件中,找到設置按鈕,點擊后進入設置界面,再找到你的賬戶按鈕,點擊進入,一直下拉
把這些服務全部打開:
點擊生成授權碼,按照操作來,發送短信,點擊我已發送,就可以得到一串授權碼, 記得自己收好哦。
html格式發送:
我們還可以發送HTML形式的文檔出去 ,所以這波操作也是一個關鍵,后續自動化發送郵件我們需要將報告進行壓縮,如何以zip或者rar又或者以其他形式的方式進行發送。
# 方法一 comtent = ''' html內容 ''' # 方法二 with open('email_msg.html','r',encoding='utf-8') as e: comtent = e.read() #這里如果正文跟html都寫,會被html格式內容跟所覆蓋掉 msg = { 'subject':'郵件主題:自動化測試報告', 'content_html':comtent, } #發件人 sender = ('123456798@qq.com','dfddfdfdfggrgrgc') #收件人 reciver = '123456789@163.com' #群發形式,這里列表不支持改成元組 #reciver = ['123465789@163.com','12345678@qq.com'] # 登錄,索引值賬號、密碼 sender = zmail.server(sender[0],sender[1])#(*sender)也叫解包,自動填充 # 發送郵件,發動到哪個郵件,以及發送內容 sender.send_mail(reciver,msg) 復制代碼
這里清安給出了兩種方法,第一種呢比較lw,還是用第二種吧,html形式的就不是很適合發送不得了的圖片了,但是還有一種你絕對的想知道,那就是附件形式去發送,簡單快捷,發完還可以清理磁盤,哈哈哈哈!!!
附件格式發送:
直接上代碼:
#發送附件,附件(attachments),多個附件的話用列表形式 msg = { 'subject':'郵件主題:你好', 'content_text':'附件', 'attachments':'1.png' } #'attachments':['1.png','test.make.txt'] #發件人 sender = ('123456798@qq.com','dfddfdfdfggrgrgc') #收件人 reciver = '123456789@163.com' #群發形式,這里列表不支持改成元組 #reciver = ['123465789@163.com','12345678@qq.com'] # 登錄,索引值賬號、密碼 sender = zmail.server(sende[0],sende[1])#(*sender)也叫解包,自動填充 # 發送郵件,發動到哪個郵件,以及發送內容 sender.send_mail(reciver,msg) 復制代碼
封裝
我們不想每次都來重新寫這些代碼,那么我們就封裝一下,需要的時候直接導入類調用使用就好了。
class Email_file(): # 主題,正文,附件,初始化對應的屬性,床送多個附件就必須要*attachments def __init__(self,subject,content_text,attachments): self.subject = subject self.content_text = content_text self.attachments = attachments #傳送多個附件,轉成列表形式 #self.attachments = list(attachments) self.msg= { 'subject':self.subject, 'content_text':self.content_text, 'attachments':self.attachments, } def send_email(self,*sender_more,**romve_more): #單個發件人,多個發件人 #self.sender = '1104282189@qq.com' self.sender = sender_more #收件人 # self.remove = '1104282189@qq.com' #多個收件人 self.list_remove = [] #把字典值存入列表中 for i in romve_more.values(): self.list_remove.append(i) #登錄操作 self.get_email = zmail.server(*self.sender) #發送 self.get_email.send_mail(self.sender,self.msg) m = Email_file('郵件主題:你好','郵件正文內容:你好!','email_msg.html') #傳值,多個發件人,多個收件人 m.send_email('123456789@qq.com','qokdghjdgjdkejye',user1='123456789@163.com',user2='123456789@qq.com') 復制代碼
最后說明一下,郵件發送需要根據自身框架的實際情況進行變更,所以,這里的只是以介紹的形式告訴你,可以這樣做。需要靈活運用,善于百度!
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。