最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python標準庫中email模塊的使用方法與內(nèi)部機制詳解

 更新時間:2025年06月11日 09:55:48   作者:蕭鼎  
在 Python 中處理電子郵件時,標準庫中的 email 模塊是首選工具,無論你需要發(fā)送 HTML 格式的郵件、帶附件的郵件,還是解析復雜的郵件結構,email 庫都能勝任,這篇博客將帶你系統(tǒng)地認識并掌握 email 模塊的使用方法與內(nèi)部機制,需要的朋友可以參考下

一、什么是 email 模塊?

email 是 Python 內(nèi)置的標準庫,用于構建或解析符合 RFC 5322 標準的電子郵件。該模塊支持:

  • 構建 MIME(Multipurpose Internet Mail Extensions)郵件,包括多部分郵件(multipart)、附件、文本/HTML 內(nèi)容等。
  • 解碼和解析原始郵件(如 .eml 文件、POP3/IMAP 下載的數(shù)據(jù)等)。
  • 支持編碼(Base64、Quoted-Printable)、字符集處理、多語言兼容等。

該模塊最早出現(xiàn)在 Python 2.2,經(jīng)過多次迭代,在 Python 3 中已高度模塊化和現(xiàn)代化,使用更加清晰直觀。

二、模塊結構與核心組件

Python 的 email 庫結構如下:

  • email.message: 定義郵件的結構(如 EmailMessage 類)。
  • email.mime: MIME 類型構建工具包,如 MIMETextMIMEImage、MIMEMultipart
  • email.parser: 用于解析原始郵件字符串為 Message 對象。
  • email.generator: 用于將 Message 對象生成字符串或?qū)懭胛募?/li>
  • email.utils: 提供通用工具函數(shù),如地址解析、時間格式化等。

三、構建電子郵件

3.1 創(chuàng)建純文本郵件

from email.message import EmailMessage

msg = EmailMessage()
msg['Subject'] = '測試郵件'
msg['From'] = 'sender@example.com'
msg['To'] = 'receiver@example.com'
msg.set_content('這是純文本郵件內(nèi)容')

print(msg.as_string())

3.2 創(chuàng)建 HTML 郵件

msg = EmailMessage()
msg['Subject'] = 'HTML 郵件'
msg['From'] = 'sender@example.com'
msg['To'] = 'receiver@example.com'

msg.set_content('這是純文本備用內(nèi)容')
msg.add_alternative("""
<html>
  <body>
    <h1 style="color:blue">這是一封 HTML 郵件</h1>
  </body>
</html>
""", subtype='html')

3.3 添加附件

with open('demo.pdf', 'rb') as f:
    file_data = f.read()
    file_name = f.name

msg.add_attachment(file_data, maintype='application', subtype='pdf', filename=file_name)

四、解析電子郵件

email 支持將原始郵件(如 .eml 文件)解析成結構化對象:

4.1 解析原始郵件內(nèi)容

from email import policy
from email.parser import BytesParser

with open('sample.eml', 'rb') as f:
    msg = BytesParser(policy=policy.default).parse(f)

print('Subject:', msg['subject'])
print('From:', msg['from'])
print('To:', msg['to'])

4.2 遍歷多部分郵件內(nèi)容

if msg.is_multipart():
    for part in msg.iter_parts():
        content_type = part.get_content_type()
        content = part.get_content()
        print(f'Part: {content_type}\nContent:\n{content}\n')
else:
    print(msg.get_content())

五、常見 MIME 類型

類型說明
text/plain純文本郵件
text/htmlHTML 郵件
multipart/mixed多部分郵件,通常包含附件
multipart/alternative文本 + HTML 備用格式
application/octet-stream任意二進制附件
image/jpeg / image/png嵌入圖像

你可以使用 email.mime.* 中的各類構造器快速創(chuàng)建這些類型:

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

六、與 smtplib 聯(lián)合發(fā)送郵件

雖然 email 負責構建郵件,但實際發(fā)送需要結合 smtplib

import smtplib

with smtplib.SMTP_SSL('smtp.example.com', 465) as smtp:
    smtp.login('user@example.com', 'password')
    smtp.send_message(msg)

七、常用工具函數(shù)(email.utils)

from email.utils import parseaddr, formataddr, format_datetime
from datetime import datetime, timezone

name, email = parseaddr("小明 <xiaoming@example.com>")
print(name, email)

# 格式化地址
print(formataddr(("測試人", "test@example.com")))

# 格式化時間為郵件頭格式
print(format_datetime(datetime.now(timezone.utc)))

八、完整示例:發(fā)送帶附件的 HTML 郵件

from email.message import EmailMessage
import smtplib

msg = EmailMessage()
msg['Subject'] = '周報'
msg['From'] = 'sender@example.com'
msg['To'] = 'receiver@example.com'

# 添加 HTML 正文
msg.set_content('請查看 HTML 格式郵件')
msg.add_alternative("""
<html>
  <body>
    <p>您好,</p>
    <p>這是本周的周報,請查收附件。</p>
  </body>
</html>
""", subtype='html')

# 添加附件
with open('report.pdf', 'rb') as f:
    msg.add_attachment(f.read(), maintype='application', subtype='pdf', filename='report.pdf')

# 發(fā)送郵件
with smtplib.SMTP_SSL('smtp.example.com', 465) as smtp:
    smtp.login('sender@example.com', 'password')
    smtp.send_message(msg)

九、調(diào)試技巧

  • 使用 .as_string() 打印構造后的郵件內(nèi)容以調(diào)試;
  • 若郵件亂碼,需設置 charset='utf-8';
  • 多部分郵件優(yōu)先順序:multipart/alternative 由客戶端選擇最合適顯示;
  • 若調(diào)試發(fā)送失敗,可打開 smtplib 的調(diào)試日志:smtp.set_debuglevel(1)。

十、總結

Python 的 email 模塊功能強大、標準化程度高,適合處理各種郵件構建與解析任務。掌握它不僅可以讓你自動化報告發(fā)送、實現(xiàn)客服回復系統(tǒng)、構建郵件網(wǎng)關,還能與 SMTP/IMAP/POP3 模塊聯(lián)動開發(fā)出郵件相關應用。

以上就是Python標準庫中email模塊的使用方法與內(nèi)部機制詳解的詳細內(nèi)容,更多關于Python email模塊使用方法的資料請關注腳本之家其它相關文章!

相關文章

  • Python3中FuzzyWuzzy庫實例用法

    Python3中FuzzyWuzzy庫實例用法

    在本篇文章中小編給各位整理了關于Python3z中FuzzyWuzzy庫實例用法及相關代碼,有興趣的朋友們可以參考下。
    2020-11-11
  • django模型層(model)進行建表、查詢與刪除的基礎教程

    django模型層(model)進行建表、查詢與刪除的基礎教程

    這篇文章主要給大家介紹了關于django模型層(model)進行建表、查詢與刪除的等基礎操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • python和flask中返回JSON數(shù)據(jù)的方法

    python和flask中返回JSON數(shù)據(jù)的方法

    下面小編就為大家整理了一篇python和flask中返回JSON數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Python實現(xiàn)PDF轉(zhuǎn)MP3的示例代碼

    Python實現(xiàn)PDF轉(zhuǎn)MP3的示例代碼

    我們平??吹胶芏辔募际荘DF格式,網(wǎng)上的各類書籍多為此格式。有時候不方便閱讀,或者怕費眼睛傷頸椎,那么有沒有一種方法可以把它變?yōu)橐纛l,本文就來和大家詳細講講
    2023-05-05
  • Python 3.x 連接數(shù)據(jù)庫示例(pymysql 方式)

    Python 3.x 連接數(shù)據(jù)庫示例(pymysql 方式)

    這篇文章主要介紹了Python 3.x 連接數(shù)據(jù)庫示例(pymysql 方式),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 詳述numpy中的np.random.random()系列函數(shù)用法

    詳述numpy中的np.random.random()系列函數(shù)用法

    本文主要介紹了詳述numpy中的np.random.random()系列函數(shù)用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • python字典基本操作實例分析

    python字典基本操作實例分析

    這篇文章主要介紹了python字典基本操作,實例分析了Python的打印輸出、刪除、賦值等常用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Python利用多線程同步鎖實現(xiàn)多窗口訂票系統(tǒng)(推薦)

    Python利用多線程同步鎖實現(xiàn)多窗口訂票系統(tǒng)(推薦)

    這篇文章主要介紹了Python利用多線程同步鎖實現(xiàn)多窗口訂票系統(tǒng),主要是利用threading.lock()通過實例代碼相結合給大家講解的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Python必考的5道面試題集合

    Python必考的5道面試題集合

    這篇文章介紹了Python必考的5道面試題,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • python中CURL 和python requests的相互轉(zhuǎn)換實現(xiàn)

    python中CURL 和python requests的相互轉(zhuǎn)換實現(xiàn)

    本文主要介紹了python中CURL 和python requests的相互轉(zhuǎn)換實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03

最新評論

伊宁县| 富平县| 定兴县| 原阳县| 濮阳市| 迭部县| 聊城市| 隆子县| 台州市| 蓝田县| 张家港市| 屏东县| 盐边县| 宝鸡市| 化隆| 房山区| 丹江口市| 阿拉善右旗| 聂拉木县| 德兴市| 安溪县| 政和县| 依兰县| 三河市| 灵寿县| 简阳市| 宜州市| 宝应县| 合阳县| 离岛区| 义马市| 怀柔区| 孝感市| 石楼县| 道孚县| 溆浦县| 阿合奇县| 墨竹工卡县| 郎溪县| 久治县| 和平县|