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

在這裏插入圖片描述

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

Python郵件發送

Python版本3.8.0,開發工具:Pycharm

首先需要了解python的smtplib提供了一種很方便的途徑發送電子郵件,它對smtp協議進行了簡單的封裝。

那什麼是smtp協議呢?

SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。


郵件發送

Python創建 SMTP 對象

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: 發送消息

實例

設置發件人信息

# 發件人郵箱
username = "[email protected]"
# QQ郵箱授權碼
password = "xxxxxxxxx"

設置收件人信息

# 可設置多個收件人郵箱
receivers = ['[email protected]''[email protected]']

# 設置抄送人信息,可多個,逗號分隔
cc = ['[email protected]']

設置發送內容,標題+內容+附件等

# 設置標題
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入門進階教程-JSON操作

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

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

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

Python入門基礎彙總




Python系列

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

如果你也想和我一起學習Python,可以關注我

學習Python,我們不只是說說而已

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章