<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          最全總結(jié)!聊聊 Python 發(fā)送郵件的幾種方式

          共 3572字,需瀏覽 8分鐘

           ·

          2020-07-28 17:45

          點擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進行關(guān)注

          回復“書籍”即可獲贈Python從入門到進階共10本電子書

          今日復明日,明日何其多。



          1. 前言

          郵件,作為最正式規(guī)范的溝通方式,在日常辦公過程中經(jīng)常被用到

          我們都知道 Python內(nèi)置了對 SMTP 的支持,可以發(fā)送純文本、富文本、HTML 等格式的郵件

          本文將聊聊利用?Python 發(fā)送郵件的?3?種方式

          2. 準備

          以 126 郵箱為例,在編碼之前,我們需要開啟 SMTP 服務(wù)

          然后,手動新增一個授權(quán)碼

          其中,賬號、授權(quán)碼和服務(wù)器地址用于連接登錄郵箱服務(wù)器

          3. 方式一:smtplib

          smtplib是 Python 自帶的依賴庫,可以直接導入使用
          首先,通過郵箱賬號、授權(quán)碼、郵箱服務(wù)器地址初始化一個 SMTP 實例,然后進行連接
          def?__init__(self):
          ????#?初始化
          ????self.smtp?=?smtplib.SMTP()

          ????#?連接郵箱服務(wù)器地址
          ????self.smtp.connect('smtp.126.com')

          ????#?加入主題和附件,郵件體
          ????self.email_body?=?MIMEMultipart('mixed')

          ????#?發(fā)件人地址及授權(quán)碼
          ????self.email_from_username?=?'**@126.com'
          ????self.email_from_password?=?'授權(quán)碼'

          #?登錄
          self.smtp.login(self.email_from_username,?self.email_from_password)
          然后,將收件人列表、郵件標題、郵件正文內(nèi)容、附件路徑及附件文件名加入到上面定義的郵件體中
          def?generate_email_body(self,?email_to_list,?email_title,?email_content,?attchment_path,?files):
          ????"""
          ????組成郵件體
          ????:param?email_to_list:收件人列表
          ????:param?email_title:郵件標題
          ????:param?email_content:郵件正文內(nèi)容
          ????:param?attchment_path:附件的路徑
          ????:param?files:附件文件名列表
          ????:return:
          ????"""

          ????self.email_body['Subject']?=?email_title
          ????self.email_body['From']?=?self.email_from_username
          ????self.email_body['To']?=?",".join(email_to_list)

          ????for?file?in?files:
          ????????file_path?=?attchment_path?+?'/'?+?file
          ????????if?os.path.isfile(file_path):
          ????????????#?構(gòu)建一個附件對象
          ????????????att?=?MIMEText(open(file_path,?'rb').read(),?'base64',?'utf-8')
          ????????????att["Content-Type"]?=?'application/octet-stream'
          ????????????att.add_header("Content-Disposition",?"attachment",?filename=("gbk",?"",?file))
          ????????????self.email_body.attach(att)

          ????text_plain?=?MIMEText(email_content,?'plain',?'utf-8')
          ????self.email_body.attach(text_plain)
          接著,就可以使用 SMTP 實例對象,將郵件發(fā)送出去
          ?#?收件人列表
          email_to_list?=?['收件人1地址','收件人2地址']

          #?發(fā)送郵件
          #?注意:此處必須同時指定發(fā)件人與收件人,否則會當作垃圾郵件處理掉
          self.smtp.sendmail(self.email_from_username,?email_to_list,?self.email_body.as_string())
          郵件發(fā)送完畢之后,退出服務(wù)即可
          def?exit(self):
          ????"""
          ????退出服務(wù)
          ????:return:
          ????"""

          ????self.smtp.quit()

          4. 方式二:zmail

          Zmail 項目創(chuàng)建目的是,使郵件處理變得更簡單

          使用 Zmail 發(fā)送接收郵件方便快捷,不需要手動添加服務(wù)器地址、端口以及適合的協(xié)議,可以輕松創(chuàng)建 MIME 對象和頭文件

          注意:Zmail 僅支持?Python3,不支持 Python2

          首先,安裝依賴庫

          #?安裝依賴庫
          pip3?install?zmail

          然后,使用郵箱賬號、授權(quán)碼創(chuàng)建一個郵箱服務(wù)對象

          class?ZMailObject(object):

          ????def?__init__(self):
          ????????#?郵箱賬號
          ????????self.username?=?'**@126.com'

          ????????#?郵箱授權(quán)碼
          ????????self.authorization_code?=?'授權(quán)碼'

          ????????#?構(gòu)建一個郵箱服務(wù)對象
          ????????self.server?=?zmail.server(self.username,?self.authorization_code)

          接著,將郵件主題、郵件內(nèi)容、包含的附件路徑加入到一個字典中,組成郵件主體

          #?郵件主體
          mail_body?=?{
          ????????'subject':?'測試報告',
          ????????'content_text':?'這是一個測試報告',??#?純文本或者HTML內(nèi)容
          ????????'attachments':?['./attachments/report.png'],
          }

          最后,將調(diào)用send_mail()函數(shù),將郵件發(fā)送出去即可

          #?收件人
          #?可以指定一個人,字符串;也可以是多個人,列表
          mail_to?=?"收件人1"

          #?發(fā)送郵件
          self.server.send_mail(mail_to,?mail_body)

          5. 方式三:yagmail

          yagmail?只需要幾行代碼,就能實現(xiàn)發(fā)送郵件的功能

          相比?zmail,yagmail 實現(xiàn)發(fā)送郵件的方式更加簡潔優(yōu)雅

          首先,安裝依賴庫

          #?安裝依賴庫
          pip3?install?yagmail

          然后,通過賬號、授權(quán)碼和服務(wù)器地址連接郵箱服務(wù)器,返回一個服務(wù)對象

          import?yagmail

          #?連接服務(wù)器
          #?用戶名、授權(quán)碼、服務(wù)器地址
          yag_server?=?yagmail.SMTP(user='**@126.com',?password='授權(quán)碼',?host='smtp.126.com')

          接著,通過 send() 函數(shù),將郵件發(fā)送出去

          #?發(fā)送對象列表
          email_to?=?['**@qq.com',?]
          email_title?=?'測試報告'
          email_content?=?"這是測試報告的具體內(nèi)容"
          #?附件列表
          email_attachments?=?['./attachments/report.png',?]

          #?發(fā)送郵件
          yag_server.send(email_to,?email_title,?email_content,?email_attachments)

          郵件發(fā)送完畢之后,關(guān)閉連接即可

          #?關(guān)閉連接
          yag_server.close()

          6. 最后

          上面總結(jié)了 Python 發(fā)送郵件的 3 種方式,實際項目中,更推薦使用后兩種方式

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學習群請在后臺回復【入群

          萬水千山總是情,點個【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 31
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丰满熟女一区二区三区在线播放 | 黄色一级a片网站 | 青青草男人的天堂 | 免费爱爱视频网站 | 成人视频在线观看视频在线观看黄色 |