本篇文章給大家分享的是有關python發郵件需要什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

在介紹具體的實現python發郵件的具體操作之前,我覺得有必要介紹下SMTP,更有助于理解python發郵件的實現原理。SMTP協議屬于TCP/IP協議簇,即簡單郵件傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式,python實現發郵件也是基于此基礎上進行封裝的。
1.python發郵件所需要的基礎包
python發送郵件需要用到python自帶的兩個模塊,smtplib和email。直接import導入,無需下載。
python的smtplib提供了一種很方便的途徑發送電子郵件,它對smtp協議進行了簡單的封裝。
2.smtplib的用法
smtplib用法相對來說很簡單,就是分為兩步。
創建SMTP的操作對象并連接smtp目標服務器,可以是163、QQ等。
根據自己的賬號登錄目標服務器(自己的郵箱地址和郵箱授權碼)
調用對象中的方法,發送郵件到目標地址。
python與smtp服務器之間的具體交互的通用代碼:
import smtplib server = smtplib.SMTP(mailserver, port) # 發件人郵箱中的SMTP服務器,端口是25 server.login(sender, passwd) # 發件人郵箱賬號、郵箱授權碼 # msg.as_string()中as_string()是將msg(MIMEText或MIMEMultipart對象)變為str。 server.sendmail(sender, receive, msg.as_string()) server.quit()
具體的python連接目標服務器的代碼如下:注:本文章用的是qq的smtp服務器。
常用郵箱的smtp服務器地址:
新浪郵箱:smtp.sina.com,搜狐郵箱:smtp.sohu.com,qq郵箱:smtp.qq.com
sender_maile='80617252@qq.com' # 發送方的郵箱地址
sender_pass = 'lsjdfsljdfk' # 郵箱提供的授權碼,可在第三方登錄,我這個是隨便打的。
sftp_obj =smtplib.SMTP('smtp.qq.com', 25)
sftp_obj.login(sender_mail, sender_pass)
#三個參數分別是:發件人郵箱賬號,收件人郵箱賬號,發送的郵件體
sftp_obj.sendmail(sender_mail, receiver_mail, msg_root.as_string())
sftp_obj.quit()3.email模塊的詳細理解和使用
email模塊下的mime模塊下有常用的三個模塊,三個模塊中有三個大類。其實就是下邊這三個了,說的很繞,下邊為導入方式,一目了然。
from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart
簡單說下他們的關系,如果構造一個MIMEText對象,就表示一個文本郵件對象,如果構造一個MIMEImage對象,就表示一個作為附件的圖片對象,要把多個對象組合起來,就用MIMEMultipart對象,他代表的是整個郵件。這樣說應該還不是很清晰,下邊就分開來說,最后會總的總結,在最后邊就是完整的代碼(可以發送一切內容的代碼)。
A.MIMEText對象中有三個需要我們設置的參數,一個是正文內容,一個是正文內容的類型,例如:”text/plain”和”text/html”,一個是正文內容的編碼。
構造普通文本:
text_info = 'hello world ' text_sub = MIMEText(text_info,'plain', 'utf-8')
構造超文本:
url = "https://blog.csdn.net/chinesepython" html_info = """ <p>點擊以下鏈接,你會去向一個更大的世界</p> <p><a href="%s">click me</a></p> <p>i am very glasses for you</p> """ % url html_sub = MIMEText(html_info, 'html', 'utf-8') # 如果不加下邊這行代碼的話,上邊的文本是不會正常顯示的,會把超文本的內容當做文本顯示 html_sub["Content-Disposition"] = 'attachment; filename="csdn.html"'
構造base64數據流,用于發送文件的時候使用,構造附件代碼:
txt_file = open(r'D:\python_files\files\hello_world.txt', 'rb').read()
txt = MIMEText(txt_file, 'base64', 'utf-8')
txt["Content-Type"] = 'application/octet-stream'
# 命名發送的附件
txt.add_header('Content-Disposition', 'attachment', filename='hello_world.txt')B.MIMEImage對象中只需要把讀取的文件傳入就行。
構造圖片:
image_file = open(r'D:\python_files\images\test.png', 'rb').read()
image = MIMEImage(image_file)
image.add_header('Content-ID', '<image1>')
# 命名發送的圖片
image["Content-Disposition"] = 'attachment; filename="red_people.png"'C.MIMEMultipart對象創建的類型有三種,此模塊主要是通過attach方法把上邊構造的內容傳入到郵件的整體內容中。
郵件類型為”multipart/alternative”的郵件正文中包括純文本正文(text/plain)和超文本正文(text/html)。
郵件類型為”multipart/related”的郵件正文中包括圖片,聲音等內嵌資源。
郵件類型為”multipart/mixed”的郵件包含附件,圖片,文本等都可以添加,所以發的內容多的話一般是用這個的,選擇mixed類型,什么內容都可以發。
以上就是python發郵件需要什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。