<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用Python發送郵件的 3 種方式

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-11-02 11:37 ? 次閱讀

1. 前言

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

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

本文將聊聊利用 Python 發送郵件的 3 種方式

2. 準備

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

然后,手動新增一個授權碼

其中,賬號、授權碼和服務器地址用于連接登錄郵箱服務器

3. 方式一:smtplib

smtplib是 Python 自帶的依賴庫,可以直接導入使用

首先,通過郵箱賬號、授權碼、郵箱服務器地址初始化一個 SMTP 實例,然后進行連接

def __init__(self):
    # 初始化
    self.smtp = smtplib.SMTP()

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

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

    # 發件人地址及授權碼
    self.email_from_username = '**@126.com'
    self.email_from_password = '授權碼'

# 登錄
self.smtp.login(self.email_from_username, self.email_from_password)

然后,將收件人列表、郵件標題、郵件正文內容、附件路徑及附件文件名加入到上面定義的郵件體中

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:郵件正文內容
    :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):
            # 構建一個附件對象
            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 實例對象,將郵件發送出去

# 收件人列表
email_to_list = ['收件人1地址','收件人2地址']

# 發送郵件
# 注意:此處必須同時指定發件人與收件人,否則會當作垃圾郵件處理掉
self.smtp.sendmail(self.email_from_username, email_to_list, self.email_body.as_string())

郵件發送完畢之后,退出服務即可

def exit(self):
    """
    退出服務
    :return:
    """
    self.smtp.quit()

4. 方式二:zmail

Zmail 項目創建目的是,使郵件處理變得更簡單

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

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

首先,安裝依賴庫

# 安裝依賴庫
pip3 install zmail

然后,使用郵箱賬號、授權碼創建一個郵箱服務對象

class ZMailObject(object):

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

        # 郵箱授權碼
        self.authorization_code = '授權碼'

        # 構建一個郵箱服務對象
        self.server = zmail.server(self.username, self.authorization_code)

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

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

最后,將調用send_mail()函數,將郵件發送出去即可

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

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

5. 方式三:yagmail

yagmail 只需要幾行代碼,就能實現發送郵件的功能

相比 zmail,yagmail 實現發送郵件的方式更加簡潔優雅

首先,安裝依賴庫

# 安裝依賴庫
pip3 install yagmail

然后,通過賬號、授權碼和服務器地址連接郵箱服務器,返回一個服務對象

import yagmail

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

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

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

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

郵件發送完畢之后,關閉連接即可

# 關閉連接
yag_server.close()

6. 最后

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    8255

    瀏覽量

    82911
  • 編碼
    +關注

    關注

    6

    文章

    835

    瀏覽量

    54501
  • 郵件
    +關注

    關注

    0

    文章

    29

    瀏覽量

    18761
  • HTML
    +關注

    關注

    0

    文章

    273

    瀏覽量

    29331
  • python
    +關注

    關注

    52

    文章

    4697

    瀏覽量

    83595
收藏 人收藏

    評論

    相關推薦

    在Java中如何使用API來完成郵件的接收與發送

    的接收與發送。 通過該篇文章我們可以有如下收獲: 了解基于Java的電子郵件客戶端的實現方式 了解常見的郵箱如何集成 認識郵箱中的IMAP與POP協議 適用場景 郵件和短信很像,將信息
    的頭像 發表于 09-30 14:09 ?1457次閱讀
    在Java中如何使用API來完成<b class='flag-5'>郵件</b>的接收與<b class='flag-5'>發送</b>

    電子郵件的使用培圳教程

    當天就能收到對方發來的郵件。 二、郵件的異步傳輸   電話通信是一同步通信,即通話雙方必須同時在電話機旁且電話必須是空閑的。而電子郵件則是以一
    發表于 03-10 17:55

    5Python實現方式詳解

    python就是是一面向對象的解釋型計算機程序設計語言,具有豐富和強大的庫,語言因其簡潔性、易讀性以及可擴展性受到歡迎。python可用于圖形處理、數學處理、文本處理、數據庫編程、網絡編程、Web
    發表于 05-22 15:52

    Labview發送notes郵件

    請前輩點撥如何用labview發送notes郵件,公司用這個郵件系統,但是通過用例的方式是無法發出郵件的,求教
    發表于 07-21 09:43

    用SpringMVC發送郵件

    1、SpringMVC實現發送郵件  今天來試著用SpringMVC發送郵件,主要需要依賴以下兩個包;  《!--spring發送
    發表于 10-21 14:47

    C#教程之調用Outlook發送郵件

    C#教程之調用Outlook發送郵件,很好的C#資料,快來學習吧。
    發表于 04-20 15:27 ?4次下載

    C#教程之調用SMTP發送有附件的郵件

    C#教程之調用SMTP發送有附件的郵件,很好的C#資料,快來學習吧。
    發表于 04-20 15:27 ?16次下載

    如何向您選擇的某人發送電子郵件

    您可以通過單擊左側的“發送”選項卡來確認您的電子郵件是否已發送。它將顯示您發送的所有電子郵件。如果未顯示最近
    的頭像 發表于 12-13 16:35 ?4796次閱讀
    如何向您選擇的某人<b class='flag-5'>發送電子郵件</b>

    基于SpringBoot實現郵件發送

    本項目通過Springboot發送email郵件,包括普通文本郵件 、HTML內容板式郵件 、包含靜態資源郵件以及帶附件
    的頭像 發表于 02-28 14:58 ?782次閱讀
    基于SpringBoot實現<b class='flag-5'>郵件</b><b class='flag-5'>發送</b>

    如何用python發送接收郵件

    SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。
    的頭像 發表于 07-11 09:30 ?698次閱讀
    如何用<b class='flag-5'>python</b><b class='flag-5'>發送</b>接收<b class='flag-5'>郵件</b>

    怎么用Python構建一個自動發送郵件的腳本

    呢? 類似的應用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人發送郵件;網站宕機了,實時發送郵件提醒;網站負載過高,發送
    的頭像 發表于 10-21 14:47 ?487次閱讀
    怎么用<b class='flag-5'>Python</b>構建一個自動<b class='flag-5'>發送</b><b class='flag-5'>郵件</b>的腳本

    【開源獲獎案例】基于T5L的smtp郵件發送

    ——來自迪文開發者論壇本期為您推送一個非常實用的迪文開發者論壇獲獎開源案例——基于T5L的smtp郵件發送器。工程師采用T5L智能屏,通過WiFi模塊訪問smtp服務器,實現了發送郵件
    的頭像 發表于 10-31 08:14 ?476次閱讀
    【開源獲獎案例】基于T5L的smtp<b class='flag-5'>郵件</b><b class='flag-5'>發送</b>器

    怎么用Python構建一個自動發送郵件的腳本

    呢? 類似的應用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人發送郵件;網站宕機了,實時發送郵件提醒;網站負載過高,發送
    的頭像 發表于 10-31 16:36 ?333次閱讀
    怎么用<b class='flag-5'>Python</b>構建一個自動<b class='flag-5'>發送</b><b class='flag-5'>郵件</b>的腳本

    如何用Python批量定制化發送郵件

    現實生活中,如果只是發郵件給自己,像上一篇文章那樣簡陋的格式是可以接受的,但若要針對每個人進行郵件的定制化,群發給公司客戶、內部員工、親戚朋友,則需更加高級的郵件發送
    的頭像 發表于 11-01 11:32 ?344次閱讀

    如何使用Python編寫腳本來自動發送郵件

    Python是一種非常流行的編程語言,可以用于多種用途,包括自動化任務。其中一個常見的自動化任務是自動發送郵件。在本文中,我們將介紹如何使用Python編寫腳本來自動
    的頭像 發表于 12-07 11:36 ?388次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>