Python入門進階教程-郵件發送

「關注我,和我一塊兒放下靈魂,讓靈魂去搬磚。」html

Python郵件發送

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入門進階教程-JSON操做

Python入門進階教程-多線程與多進程

Python入門進階教程-正則表達式

Python入門進階教程-面向對象

Python入門基礎彙總



Python系列

Python系列會持續更新,從基礎入門到進階技巧,從編程語法到項目實戰。若您在閱讀的過程當中發現文章存在錯誤,煩請指正,很是感謝;若您在閱讀的過程當中能有所收穫,歡迎一塊兒分享交流。

若是你也想和我一塊兒學習Python,能夠關注我

學習Python,咱們不僅是說說而已

相關文章
相關標籤/搜索