中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python實現發郵件功能

發布時間:2021-09-18 15:39:56 來源:億速云 閱讀:186 作者:chen 欄目:編程語言

這篇文章主要介紹“怎么用Python實現發郵件功能”,在日常操作中,相信很多人在怎么用Python實現發郵件功能問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Python實現發郵件功能”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

準備

  • 編輯器:sublime text 3

  • 模塊:smtplib和email

項目實施

1.安裝

pip install smtplib pip install email

注:這里有一個小坑,就是安裝smtplib不能像上面那樣直接安裝,那樣會安裝不上的,你得先安裝PyEmail,因為你smtplib  集成在了這個模塊中了,就好比pillow模塊集成在PIL中一樣的,另一個正常安裝即可。

2.開通pop3 SMTP imap 服務了解郵箱授權碼

任何一個郵箱你如果想要發郵件,你得先開通以上服務,讓郵件能夠通信,而且還得有郵箱授權碼,比如說QQ郵箱:

打開QQ郵箱,選擇設置--------賬戶,然后開啟服務。

怎么用Python實現發郵件功能
怎么用Python實現發郵件功能

開啟服務后,點擊生成授權碼,保存好授權碼。獲取授權碼只需要你用注冊手機號發短信或者動態令牌即可。

3.構建郵件端口,建立連接

import smtplib sm=smtp.SMTP()  # 初始化連接 sm.connect('郵件服務器地址','端口')  #建立連接 sm.login('郵箱賬號','郵箱密碼/授權碼')  #登陸賬戶 sm.sendmail('郵件發送方','郵件接受方','郵件內容') #發送郵件 sm.quit() #關閉連接,結束郵件服務

了解了以上的知識后,我們來試著登陸一下吧,我以QQ郵箱為例:

怎么用Python實現發郵件功能

有這樣的標識表示登陸成功,順便強調一句,在這里我為什么沒有配置郵件服務器端口,因為服務器已經幫我們配置好了,默認的都是25號端口,如果你擔心郵件的安全問題,比如會被黑客截胡,你也可以使用ssl鏈接傳輸:

怎么用Python實現發郵件功能

同樣它的端口也是默認配置好了,他的端口號為465,為了安全,咱們選擇這項。

4.構建郵件內容部分

這里我們需要用到email模塊,我們都知道,郵件一般可以發很多東西,比如說文本,圖片,文件等等,那么我們來看看吧。

一、文本

導入模塊

from email.mime.text import MIMEText

填充文本

在此之前我們得知道它的具體用法:

  • MIMEText(‘郵件內容’,‘類型’, '編碼')

  • 郵件內容為字符串

  • 類型: text/plain text/html

  • 編碼 : utf-8 gbk

構造文本

MIMEText('hello','text/plain','utf-8')

構造超文本

MIMEText('<a href='www.baidu.com'>點擊此處有驚喜</a>','text/html','utf-8')

下面我們來實際操作下吧。

怎么用Python實現發郵件功能

怎么用Python實現發郵件功能

非常成功收到了郵件了。正是2091500484這個郵箱給我發的。當然我們這樣只是實現了最簡單的功能,

我們需要將它格式規范下,比如給它添加個開頭結尾什么的。我們需要導入構建郵件完整內容的模塊:

from email.header import Header

然后設置頭部,內容,尾部

msg1['From']=Header('你是豬嗎')  #設置發件人昵稱 msg1['To']=Header('hwhrr123321@163.com') #設置收件人昵稱 msg1['Subject'] = Header('我是豬') #設置標題

 怎么用Python實現發郵件功能

可以看到,是不是覺得很有趣了,快來試試吧,哈哈哈。。。

二、圖片

發了文本后我們還想發一張圖片,那該怎么辦呢?莫慌,此時需要先導入發圖片的模塊:

from email.mime.image import MIMEImage

然后我們在讀取圖片文件將它添加到郵件中去。

ff=open('1.jpg','rb').read() #打開文件 fd=MIMEImage(ff,'subtype')    #初始化 fd.add_header('Content-ID','1.jpg')  #添加到頭部

 怎么用Python實現發郵件功能

可以看到圖片并沒有顯示出來,那么這是怎么回事,哦,原來圖片是依托附件而存在的,要么是html要么是附件,但是兩者都需要附件模塊的支持,下面我們導入附件模塊:

from email.mime.multipart import MIMEMultipart

1.將圖片插入到html中

也就是將圖片插入到正文部分,而非附件的形式。

msg3 = MIMEMultipart('related') msg3['From'] = '你是豬嗎' msg3['To'] = 'hwhrr123321@163.com' msg3['Subject'] = '我是豬' msg4 = MIMEMultipart('alternative') #構建一個附件 msg3.attach(msg4)  #將附件引入到另一個附件 text="""    <html>    <body>    <img src='cid:img' tittle='I am  pig'>    </body>    </html> """ msg4.attach(MIMEText(text, 'html', 'utf-8')) #將html插入到附件中 ff=open('2.jpg','rb') img = MIMEImage(ff.read())  #將圖片讀取到附件中 ff.close() img.add_header('Content-ID','<img>') #添加圖片頭部 msg3.attach(img)   #將圖片添加到附件 sm.sendmail('2091500484@qq.com','hwhrr123321@163.com',msg3.as_string()) #發送 sm.quit()

可以看出,過程還是比較復雜的,比單純附件添加圖片麻煩點,主要是嵌套了一層附件結構。

怎么用Python實現發郵件功能

2.將圖片引入到附件中

這個比較好實現。如圖:

怎么用Python實現發郵件功能

三、文件

在發送文件前,我們要考慮的一個問題是,我們讀取它要以二進制的形式,然后再將它添加到附件中,搞懂了這個就好辦了。

1.讀取文件

這里我們需要構造一個base64的一個數據流讀取文件:

msg6=MIMEMultipart() txt=MIMEText(open('fd.txt','rb').read(), 'base64', 'utf-8')

2.設置傳輸類型

txt["Content-Type"] = 'application/octet-stream'

3.設置附件名稱

txt["Content-Disposition"] = 'attachment; filename = "fd.txt" '

4.將文件添加到附件中

msg6.attach(txt)

最后就成功將文件添加到了附件中了。

怎么用Python實現發郵件功能

項目總結

以上便是我對郵件發送的所有感悟了,另外如果你想將郵件傳輸時的過程直觀展示出來的話只需在郵件服務器登陸的前一句加上:

sm.set_debuglevel(1)

到此,關于“怎么用Python實現發郵件功能”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临猗县| 隆子县| 纳雍县| 靖边县| 合山市| 张家港市| 武山县| 福贡县| 通许县| 清徐县| 那曲县| 阿克苏市| 来安县| 伊川县| 白银市| 河津市| 太湖县| 泰和县| 罗源县| 晋江市| 通河县| 临海市| 郎溪县| 额济纳旗| 榆树市| 澎湖县| 石泉县| 黄梅县| 韶山市| 铜山县| 新源县| 吉安县| 元朗区| 齐河县| 轮台县| 襄樊市| 榆社县| 淅川县| 黄大仙区| 昌乐县| 乌兰县|