「關注我,和我一塊兒放下靈魂,讓靈魂去搬磚。」html
Python版本3.8.0,開發工具:Pycharmpython
首先須要瞭解python的smtplib提供了一種很方便的途徑發送電子郵件,它對smtp協議進行了簡單的封裝。web
那什麼是smtp協議呢?正則表達式
SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。編程
Python建立 SMTP 對象bash
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
複製代碼
參數說明
:服務器
- host: SMTP 服務器主機。 你能夠指定主機的ip地址或者域名如:runoob.com,這個是可選參數。
- port: 若是你提供了 host 參數, 你須要指定 SMTP 服務使用的端口號,通常狀況下SMTP端口號爲25。
- local_hostname: 若是SMTP在你的本機上,你只須要指定服務器地址爲 localhost 便可。
Python SMTP對象使用sendmail方法發送郵件微信
參數說明
:多線程
- from_addr: 郵件發送者地址。
- to_addrs: 字符串列表,郵件發送地址。
- msg: 發送消息
設置發件人信息
app
# 發件人郵箱
username = "xxxxxxx@qq.com"
# QQ郵箱受權碼
password = "xxxxxxxxx"
複製代碼
設置收件人信息
# 可設置多個收件人郵箱
receivers = ['xxxxxxx@qq.com', 'yyyyyyy@qq.com']
# 設置抄送人信息,可多個,逗號分隔
cc = ['zzzzzzzz@qq.com']
複製代碼
設置發送內容,標題+內容+附件等
# 設置標題
subject = "我是郵箱標題"
# 設置內容
content = "我是郵箱內容"
# 建立MIMEMultipart對象,並封裝相應的數據
message = MIMEMultipart()
# 封裝標題
message['Subject'] = Header(subject, 'gbk')
# 封裝發件人標識
message['From'] = "每日推送"
# 封裝收件人和抄送人
message['to'] = Header(",".join(receivers))
message['Cc'] = Header(",".join(cc))
# 生成郵件正文,能夠是html
msgText = MIMEText(content, "plain", "utf-8")
# 封裝郵件正文
message.attach(msgText)
複製代碼
建立實例,發送郵件
# 設置smtp的相關參數
smtp_server = 'smtp.qq.com'
smtp_port = 25
smtp = smtplib.SMTP(smtp_server, smtp_port)
# 登陸
smtp.login(username, password)
# 發送郵件
smtp.sendmail(username, receivers+cc, message.as_string())
smtp.quit()
複製代碼
其餘功能
郵件正文應用 html
# 更改content內容格式爲html
send_text = MIMEText(content, "html", "utf-8")
# 郵件正文html模板
content = """
<html>
<h1>html測試:</h1>
<p>測試1</p>
<a href="https://www.hao123.com/">hao123</a>
<br>
<a href="https://www.baidu.com/?tn=sitehao123">baidu</a>
<br>
<p><img src="cid:image" alt="圖片" width="100" height="100"></a></p>
<br>
<a href="#">圖片介紹</a>
</html>
"""
複製代碼
郵件正文中添加圖片
# 讀取文件並建立MIMEImage
fp = open(file_path, 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
# 定義圖片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image>')
message.attach(msgImage)
複製代碼
郵件正文中添加附件
# 讀取csv文件做爲附件
send_file_path = "xxxxxx"
# 發送附件
addfile = MIMEText(open(send_file_path, 'rb').read(), 'base64', 'gbk')
addfile['Content-Type'] = 'application/octet-stream'
addfile.add_header('Content-Disposition', 'attachment', filename='文件名稱.csv')
message.attach(addfile)
複製代碼
帶附件的郵件發送成功截圖以下:
關注微信公衆號【知秋小夢】後臺回覆郵件附件獲取源代碼
帶html格式及圖片的郵件發送成功截圖以下:
關注微信公衆號【知秋小夢】後臺回覆郵件html獲取源代碼
發送郵件的用處仍是挺大的,當你的自動運行腳本寫好後,能夠設置發送處理結果到你的郵箱中,或者直接經過郵箱發給其餘同事,省時省力,建議掌握。
Python系列會持續更新,從基礎入門到進階技巧,從編程語法到項目實戰。若您在閱讀的過程當中發現文章存在錯誤,煩請指正,很是感謝;若您在閱讀的過程當中能有所收穫,歡迎一塊兒分享交流。
若是你也想和我一塊兒學習Python,能夠關注我
學習Python,咱們不僅是說說而已