Email自動發送教程:使用Python SMTP服務發送郵件

一、背景介紹

郵箱一直是現代人工作和生活中不可或缺的一部分,而人們有時需要通過代碼發送郵件,來實現自動化處理和通知。Python作為一種靈活多變的編程語言,為此提供了SMTP服務發送郵件的工具。該教程將詳細介紹使用Python發送Email的步驟和注意事項。

二、SMTP服務的配置

SMTP(簡單郵件傳輸協議)是一種用於發送電子郵件的標準協議。在使用Python發送郵件之前,首先需要配置SMTP伺服器,以確保Python程序能夠與SMTP伺服器進行通信。以下是SMTP服務的配置步驟:

1.在郵件客戶端創建SMTP賬戶。大多數郵箱服務提供商都為用戶提供SMTP賬戶(比如QQ郵箱、Gmail等)。用戶需要登錄郵箱賬號,找到SMTP賬戶設置選項,按照提示創建SMTP賬戶。

2.獲取SMTP伺服器地址。在創建SMTP賬戶後,用戶可以從SMTP賬戶設置界面或者郵箱客戶端的幫助文檔中獲取SMTP伺服器的地址。以QQ郵箱為例,SMTP伺服器地址為smtp.qq.com。

3.設置SMTP口令。SMTP口令是用於驗證身份的密碼。用戶需要登錄SMTP賬戶,創建一個SMTP口令,並保存好口令字元串。

4.設置SMTP埠號。SMTP伺服器監聽的埠號通常是25、587或465。用戶需要根據SMTP賬戶設置選項或者幫助文檔來獲取SMTP伺服器的埠號。

三、Python發送Email的步驟

Python通過smtplib模塊提供SMTP服務發送Email的功能。以下是Python發送Email的步驟:

1.導入smtplib模塊。在Python程序中,使用import語句導入smtplib模塊,以便在程序中調用SMTP服務。

import smtplib

2.創建SMTP客戶端對象。使用smtplib模塊的SMTP類,創建SMTP客戶端對象,並連接到SMTP伺服器。

smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
smtp_obj.login(sender_email, smtp_token) 

3.編寫Email內容。使用Python提供的email模塊構建Email的頭部、正文和附件,創建MIME(多媒體郵件)郵件對象。

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

msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = recipient_email
msg['Subject'] = email_subject

text = MIMEText(email_body)
msg.attach(text)

attachment = MIMEApplication(open(attachment_path, 'rb').read(), _subtype='txt')
attachment.add_header('Content-Disposition', 'attachment', filename=os.path.basename(filename))
msg.attach(attachment)

4. 送信和關閉SMTP客戶端對象。使用smtplib模塊的SMTP類,向SMTP伺服器送信,並關閉SMTP客戶端對象。

smtp_obj.send_message(msg)
smtp_obj.quit()

四、Python代碼示例

以下是一個完整的Python代碼示例,演示如何使用Python SMTP服務發送郵件。

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

smtp_server = 'smtp.qq.com'
smtp_port = '25'
sender_email = 'abc@qq.com'
smtp_token = 'xxxxxx'
recipient_email = 'xxx@qq.com'
email_subject = '自動發送郵件'
email_body = '你好,這是一封自動發送的郵件。'

msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = recipient_email
msg['Subject'] = email_subject

text = MIMEText(email_body)
msg.attach(text)

attachment_path = 'attachment.txt'
attachment = MIMEApplication(open(attachment_path, 'rb').read(), _subtype='txt')
attachment.add_header('Content-Disposition', 'attachment', filename=os.path.basename(attachment_path))
msg.attach(attachment)

smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
smtp_obj.login(sender_email, smtp_token)
smtp_obj.send_message(msg)
smtp_obj.quit()

五、總結

Python提供的SMTP服務發送郵件的工具讓程序員能夠非常方便地實現郵件自動發送和通知功能,大大提高了工作效率。在實際使用過程中,需要注意SMTP伺服器的配置和Python代碼的正確性,以確保Email能夠成功發送。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152205.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-12 00:55
下一篇 2024-11-12 00:55

相關推薦

  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變數類型,而是在變數第一次賦值時自動識別該變數的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • IDEA Java發送郵件出現錯誤解決方案

    IDEA Java是一款常用的Java開發工具,很多開發者都使用它來開發Java應用程序。然而,在使用IDEA Java發送郵件時,有可能會出現一些錯誤。本文將從多個方面對該錯誤進…

    編程 2025-04-29
  • Python煙花教程

    Python煙花代碼在近年來越來越受到人們的歡迎,因為它可以讓我們在終端里玩煙花,不僅具有視覺美感,還可以通過代碼實現動畫和音效。本教程將詳細介紹Python煙花代碼的實現原理和模…

    編程 2025-04-29
  • 使用Snare服務收集日誌:完整教程

    本教程將介紹如何使用Snare服務收集Windows伺服器上的日誌,並將其發送到遠程伺服器進行集中管理。 一、安裝和配置Snare 1、下載Snare安裝程序並安裝。 https:…

    編程 2025-04-29
  • Python畫K線教程

    本教程將從以下幾個方面詳細介紹Python畫K線的方法及技巧,包括數據處理、圖表繪製、基本設置等等。 一、數據處理 1、獲取數據 在Python中可以使用Pandas庫獲取K線數據…

    編程 2025-04-28

發表回復

登錄後才能評論