Python連載56-發送帶有附件、正文為HTML的郵件

来源:https://www.cnblogs.com/ruigege0000/archive/2019/12/09/12008780.html
-Advertisement-
Play Games

一、HTML格式怎麼發送右鍵 1.準備HTML代碼作為內容 2.把郵件的subtype設置為html 3.發送 4.舉個例子:自己發給自己一個HTML格式的文件 from email.mime.text import MIMEText ​ main_content = """ <!DOCTYPE h ...


一、HTML格式怎麼發送右鍵

1.準備HTML代碼作為內容

2.把郵件的subtype設置為html

3.發送

4.舉個例子:自己發給自己一個HTML格式的文件

 

from email.mime.text import MIMEText

​

main_content = """

        <!DOCTYPE html>

        <html lang = "en"

        <head>

            <meta charset = "UTF-8">

            <title>實例</title>

        </head>

        <body>

            <h1>這個是做測試用的html<h1>

        </body>

        </html>

        """

​

msg = MIMEText(main_content,"html","utf-8")

​

#構建發送者地址和登錄信息

from_addr = "[email protected]"

from_pwd = ""

#構建郵件接受者的信息

to_addr = "[email protected]"

smtp_srv = "smtp.qq.com"

try:

    import smtplib

    srv = smtplib.SMTP_SSL(smtp_srv.encode(),465)

    srv.login(from_addr,from_pwd)

    srv.sendmail(from_addr,[to_addr],msg.as_string())

    srv.quit()

​

except Exception as a:

    print(a)

二、發送帶附件的郵件

1.可以把郵件看作是一個文本郵件和一個附件的合體

2.一封郵件如果涉及多個部分,需要使用MIMEMultipart格式構建

3.添加一個MIMEText正文

4.添加一個 MIMEBase或者MEMEText作為附件

5.舉個例子:

 

from email.mime.text import MIMEText#構建附件使用

from email.mime.multipart import MIMEBase,MIMEMultipart#構建基礎郵件使用

​

mail_mul = MIMEMultipart()#構建一個郵件對象

mail_text = MIMEText("Hello,I am liudana","plain","utf-8")#構建郵件正文

mail_mul.attach(mail_text)#把構建好的郵件正文附加到郵件中

#構建附件,需要從本地讀入附件

#打開一個本地文件

#以rb格式打開

with open("00.TestCasePython.py","rb") as  f:

    s = f.read()

    #設置附件的MIME和文件名

    m = MIMEText(s,"base64","utf-8")#類型是base64,這是郵件正文的格式,這裡只需要記住就可以了

    m["Content-Type"] = "application/octet-stream"

    #需要註意

    #1.attachment後分號位英文狀態

    #2.filename後面需要引號包裹,註意與外面引號錯開

    m["Content-Disposition"] = "attachment;filename = '00.TestCasePython.py'"

    #添加到MIMEMultipart

    mail_mul.attach(m)

​

#構建發送者地址和登錄信息

from_addr = "[email protected]"

from_pwd = "ysqmojzwkgfciccd"

#構建郵件接受者的信息

to_addr = "[email protected]"

smtp_srv = "smtp.qq.com"

try:

    import smtplib

    srv = smtplib.SMTP_SSL(smtp_srv.encode(),465)

    srv.login(from_addr,from_pwd)

    srv.sendmail(from_addr,[to_addr],mail_mul.as_string())

    srv.quit()

​

except Exception as a:

    print(a)

三、源碼

D55_2_HTMLMailSend.py

D55_3_SendAttachmentMail.py

https://github.com/ruigege66/Python_learning/blob/master/D55_2_HTMLMailSend.py

https://github.com/ruigege66/Python_learning/blob/master/D55_3_SendAttachmentMail.py

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客園:https://www.cnblogs.com/ruigege0000/

4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...