Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码
在運維開發中,使用 Python 發送郵件是一個非常常見的應用場景。今天一起來探討一下,GitHub 的大牛門是如何使用 Python 封裝發送郵件代碼的。
一般發郵件方法
SMTP是發送郵件的協議,Python內置對SMTP的支持,可以發送純文本郵件、HTML郵件以及帶附件的郵件。
我們以前在通過Python實現自動化郵件功能的時候是這樣的:
學習python中有什么不懂的地方,小編這里推薦加小編的python學習群:895 817 687 有任何不懂的都可以在里面交流,還有很好的視頻教程pdf學習資料,大家一起學習交流!1 import smtplib2 from email.mime.text import MIMEText3 from email.header import Header4 #發送郵件服務器5 smtpserver = 'smtp. sina. com'6 #發送郵件用戶/密碼7 user = 'usernamee@sina. com'8 password = '123456'9 #發送郵件 python學習群984632579 10 sender = 'username@sina. com" 11 #接收郵件 12 receiver = 'receive@126. com' 13 #發送郵件主題 14 subject = 'Python email test' 15 #編寫HTML類型的郵件正文 16 msg = MIMEText('<html><h1>你好 ! </h1></html>','html','utf-8') 17 msg['Subject'] = Header(subject,'utf-8') 18 #連接發送郵件 19 smtp = smtplib.SMTP() 20 smtp.connect(smtpserver) 21 smtp.login(user,password) 22 satp.sendmail(sender, receiver, msg.as_ string()) 23 satp.quit()python發郵件需要掌握兩個模塊的用法,smtplib和email,這倆模塊是python自帶的,只需import即可使用。smtplib模塊主要負責發送郵件,email模塊主要負責構造郵件。
smtplib模塊主要負責發送郵件:是一個發送郵件的動作,連接郵箱服務器,登錄郵箱,發送郵件(有發件人,收信人,郵件內容)。
email模塊主要負責構造郵件:指的是郵箱頁面顯示的一些構造,如發件人,收件人,主題,正文,附件等。
其實,這段代碼也并不復雜,只要你理解使用過郵箱發送郵件,那么以下問題是你必須要考慮的:
- 你登錄的郵箱帳號/密碼
- 對方的郵箱帳號
- 郵件內容(標題,正文,附件)
- 郵箱服務器(SMTP.xxx.com/pop3.xxx.com)
如果要把一個圖片嵌入到郵件正文中怎么做?直接在HTML郵件中鏈接圖片地址行不行?答案是,大部分郵件服務商都會自動屏蔽帶有外鏈的圖片,因為不知道這些鏈接是否指向惡意網站。
要把圖片嵌入到郵件正文中,我們只需按照發送附件的方式,先把郵件作為附件添加進去,然后,在HTML中通過引用src="cid:0"就可以把附件作為圖片嵌入了。如果有多個圖片,給它們依次編號,然后引用不同的cid:x即可。
yagmail 實現發郵件
yagmail 可以更簡單的來實現自動發郵件功能。
github項目地址: https://github.com/kootenpv/yagmail
代碼開源,解釋如下:
1 yag = SMTP(args.user,args.password) 2 yag.send(to.=args.to,subject=args.subject,contents=args.contents,attachments=args.attachments)安裝:
pip install yagmail簡單例子:
import yagmail #鏈接郵件服務器 yag = yagmail.SMTP(user="user@126.com",password="1234",host='smtp.126.com') #郵件正文 contents = [‘This is the body,and here is just text http://somedomain/image.png','You can find an andio file atteched.','/local/path/song mp3'] #發送郵件 yag.send('taaa@126.com','subject',contents)給多個用戶發郵件:
只需要將接收郵箱 變成一個list即可。
yag.send(['aa@126.com','bb@qq.com','cc@gmail.com'], 'subject', contents)給多個用戶發郵件:
只需要將接收郵箱 變成一個list即可。
yag.send(['aa@126.com','bb@qq.com','cc@gmail.com'], 'subject', contents)發送附件
如何發送附件呢?只要添加一個附件列表就可以了。
yag.send('aaaa@126.com', '發送附件', contents, ["d://log.txt","d://baidu_img.jpg"])抄送
#郵件正文 文本及附件contents = ['This is the body,and here is just text http://somedomain/image.png','You can find an audio file attached.','/local/path/song.mp3','測試郵件','test.html','logo.jpg','yagmal_test.txt']#發送yag.send(to='xx@xx.com',cc='xxx@xxx.com',subject='發送附件',contend=contents)總結
以上是生活随笔為你收集整理的Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Beyond的歌里最多是唏嘘吗? - P
- 下一篇: 10个常用的代码简写技术,看懂一种是入门