<wbr id="wsjqy"></wbr>

          <form id="wsjqy"></form>
          <sub id="wsjqy"></sub>
          <nav id="wsjqy"><listing id="wsjqy"></listing></nav>
          更多課程 選擇中心


          Python培訓

          400-111-8989

          如何用zmail簡單地發郵件? Python開源項目分享

          • 發布:ZYunH
          • 來源:Python中文社區
          • 時間:2019-01-29 16:11

          今天我們為大家分享的是一個Python開源項目——用zmail簡單地發郵件,那么在Python編程中,這個過程是如何實現的呢?我們又為什么選擇zmail,而不是其他的輪子呢?所有相關的疑問,這里幫你解決。

          Python開源項目分享

          其他輪子的缺點:

          服務端拒信:首要問題。很多其他的輪子需要自己構造MIME和郵件頭(通常優化了過程),但經常遭遇拒信,具體原因是其沒有正確的定義郵件頭,諸如From和To的頭信息在使用SMTP時每家服務商檢查都會有細微的差別,以及一些平臺的差異(win10 localhost亂碼導致發件拒信),甚至在你發往不同的地址檢查也會有差別(國內發國外需要額外驗證一些信息預防垃圾郵件)。

          構造太麻煩:特別是添加附件的時候,有些還需要額外去自定義類型,體驗很差。

          發送太麻煩:你需要找到你服務商的smtp地址,端口號,有些服務商不是默認的端口(@http://163.com),有些只能SSL驗證(@http://qq.com),有些需要TLS(@gmailcom),一個不小心就發送失敗。

          解析郵件復雜:Bytes坑多,還有boundary,各種格式亂碼錯誤。

          引入過多的外部包:一些輪子引入了好幾個包,可能會造成包與原來的程序版本沖突(常見于requests之類的包),并且發生錯誤無法得到及時的文檔支持。在我嘗試發送失敗后,使用django的email模塊成功發送了郵件,但是django的目的顯然不是這個,使用一個如此大的框架來實現那么小的需求顯然不合理(并且構造過程依然復雜)。

          Zmail的優勢:

          自動填充大多數導致服務端拒信的頭信息(From To LocalHost之類的)

          將一個字典映射為email,構造信件就像構造字典一樣簡單

          自動尋找郵件服務商端口號地址,自動選擇合適的協議(經過認證的)

          只依賴于Python3,嵌入其他項目時無需煩惱

          你可以使用zmail來:

          作為監控腳本的發送&接收郵件模塊,及時傳遞信息

          嵌入到已有的項目中實現郵件功能

          自定義郵件發送過程,諸如準點發送、定時發送、自動監控等

          安裝

          $ pip3 install zmail

          也可以使用pip代替pip3

          注意:zmail僅支持Python3,不支持Python2,使用前所有郵箱都要開啟SMTP功能,@http://163.com和@http://gmail.com 的郵箱需要額外設定SMTP密碼,網上很多信息,具體自行百度google,這里先行省略。

          發送郵件

          import zmail
          
          
          # 你的郵件內容
          
          
          mail_content = {'subject': 'Success!',  # 隨便填寫
          
          
              
          'content': 'This message from zmail!',  # 隨便填寫
          
          
          }
          
          
          
          
          # 使用你的郵件賬戶名和密碼登錄服務器
          
          
          server = zmail.server('12345678@qq.com, '你的qq郵箱密碼')
          
          
          # 發送郵件
          
          
          server.send_mail('555555@qq.com', mail)

          為你的郵件添加附件,修改你的郵件內容 即可,其他內容同上

          # 你的郵件內容
          
          
          mail_content = {'subject': 'Success!',  # 隨便填寫
          
          
              
          'content': 'This message from zmail!',  # 隨便填寫
          
          
              
          'attachments': '/Users/zyh/Documents/example.zip',  # 最好使用絕對路徑,若你電腦沒有這個文件會造成錯誤
          
          
          }

          給多個信箱發件,修改發送郵件 即可,其他內容同上

          # 發送郵件
          
          
          server.send_mail(['555555@qq.com','666666@qq.com'], mail)

          添加額外的頭信息,直接加入到mail_content即可

          取回你的郵件

          取得最新的郵件

           import zmail
          
          
          server = zmail.server('yourmail@example.com, 'yourpassword')
          
          
          mail = server.get_latest()

          依據id取回郵件

          mail = server.get_mail(2)

          依據 (subject,after,before,sender)取回一個列表的郵件

          mail = server.get_mails(subject='GitHub',after='2018-1-1',sender='github')

          示例中, 如果 'GitHub' 在郵件的主題中,這封郵件將會被匹配, 例如' [GitHub] Your password has changed'

          sender亦是如此

          得到所有郵件的頭文件信息.一個由字典組成的列表,每個字典包含了所有能夠提取的頭文件.

          mail_info = server.get_info()

          得到郵箱的信息

          mailbox_info = server.stat()

          結果為包含兩個整型的元組: (郵件的數量, 郵箱的大小).

          解析你的郵件

          在zmail中,接收到的郵件被映射為一個字典,你可以通過訪問python字典的形式來訪問你的郵件,字典中的所有key在下方郵件結構中有列出,例如

          subject = mail['subject']

          展示你的郵件,使用 zmail.show()

          import zmail
          
          
          server = zmail.server('yourmail@example.com, 'yourpassword')
          
          
          mail = server.get_latest()
          
          
          zmail.show(mail)

          輸出 :

          content-type multipart/mixed
          
          
          subject Success!
          
          
          to zmail_user
          
          
          from zmail<zmail@126.com>
          
          
          date 2018-2-3 01:42:29 +0800
          
          
          boundary ===============9196441298519098157==
          
          
          content ['This message from zmail!']
          
          
          contents [[b'Content-Type: text/plain; charset="utf-8"', b'MIME-Version: 1.0', b'Content-Transfer-Encoding: base64', b'', b'VGhpcyBtZXNzYWdlIGZyb20gem1haWwh', b'']]
          
          
          attachments None
          
          
          id 5

          郵件的結構

          content-type: 郵件內容的類型

          subject: 郵件主題

          to:收件人

          from:寄件人

          date: 年-月-日 時間 時區

          boundary: 如果郵件為multiple - - - parts,你可以得到其分界線

          content: 郵件的文本內容(僅在text/plain時可以被解析)

          contents: 郵件的body,里面包含著由分界線分割的每一個段落

          attachments: None 或者 [['附件名稱;編碼方式','附件的二進制內容']...]

          id: 在郵箱中的id

          獲得附件

          import zmail
          
          
          server = zmail.server('yourmail@example.com, 'yourpassword')
          
          
          mail = server.get_latest()
          
          
          zmail.get_attachment(mail)

          你可以重命名你的附件,使用

          zmail.get_attachment(mail,'example.zip')

          支持的郵件服務商:列表中的郵件服務商已經被測試可正常使用

          支持的郵件服務商

          如果你的郵箱不在此列,前往Github提交issue。

          感謝您的閱讀,以上就是今天為大家分享的Python開源項目——用zmail簡單地發郵件,你看懂了嗎?看懂了就趕緊自己嘗試著動手練習一下,并把郵件發出去吧!好了,更多Python有趣有料的內容盡在達內Python培訓機構官網,敬請關注!

          免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

          預約申請免費試聽課

          填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

          上一篇:python培訓教程:Python 2.X與3.X快速切換版本
          下一篇:【Python習題庫】開啟Python之旅

          python基礎-面向對象編程

          Python基礎語法——條件控制以及循環語句

          Python爬蟲之申萬指數抓取

          • 掃碼領取資料

            回復關鍵字:視頻資料

            免費領取 達內課程視頻學習資料

          • 視頻學習QQ群

            添加QQ群:1143617948

            免費領取達內課程視頻學習資料

          Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

          選擇城市和中心
          黑龍江省

          吉林省

          河北省

          湖南省

          貴州省

          云南省

          廣西省

          海南省

          网友自拍 偷拍 校园性爱青青草曰逼视屏老鸭窝国产偷自视频区视频 百度 好搜 搜狗
          <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>