精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

    文章

    9018

    瀏覽量

    85182
  • 編碼
    +關注

    關注

    6

    文章

    935

    瀏覽量

    54760
  • 郵件
    +關注

    關注

    0

    文章

    31

    瀏覽量

    18799
  • HTML
    +關注

    關注

    0

    文章

    277

    瀏覽量

    34368
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84451
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

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

    使用Python向Telegram用戶發送消息

    電子發燒友網站提供《使用Python向Telegram用戶發送消息.zip》資料免費下載
    發表于 11-24 10:49 ?0次下載
    使用<b class='flag-5'>Python</b>向Telegram用戶<b class='flag-5'>發送</b>消息

    基于SpringBoot實現郵件發送

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

    如何用python發送接收郵件

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

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

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

    Python調用JS的 4 方式

    Python 實現 本文將聊聊利用 Python 調用 JS 的4方式 2. 準備 以一段簡單的 JS 腳本為例,將代碼寫入到文件中
    的頭像 發表于 10-30 09:41 ?673次閱讀

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

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

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

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

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

    Python是一非常流行的編程語言,可以用于多種用途,包括自動化任務。其中一個常見的自動化任務是自動發送郵件。在本文中,我們將介紹如何使用Pyth
    的頭像 發表于 12-07 11:36 ?1305次閱讀