Python基礎SMTP伺服器搭建:實現郵件收發功能

一、SMTP伺服器的搭建

SMTP(Simple Mail Transfer Protocol),即簡單郵件傳輸協議,是用於郵件發送的標準協議。如果要實現郵件的收發功能,需要搭建SMTP伺服器。Python提供了smtplib和email兩個標準庫,用於實現SMTP和郵件發送功能。

實現SMTP伺服器可以使用Python內置的smtplib標準庫,下面是搭建SMTP伺服器的代碼示例:


import smtplib

# SMTP伺服器配置信息
smtp_server = 'smtp.xxx.com'  # SMTP伺服器地址
smtp_port = 25  # SMTP伺服器埠號
smtp_user = 'xxxxx@xxx.com'  # SMTP伺服器用戶名
smtp_password = 'xxxxx'  # SMTP伺服器密碼

# 發送郵件
def send_email(sender, receivers, message):
    try:
        smtp_conn = smtplib.SMTP(smtp_server, smtp_port)
        smtp_conn.login(smtp_user, smtp_password)
        smtp_conn.sendmail(sender, receivers, message.as_string())
        smtp_conn.quit()
        print("郵件發送成功")
    except Exception as e:
        print("郵件發送失敗:", e)

# 構造郵件
def make_email(sender, receivers, subject, content):
    from email.mime.text import MIMEText
    message = MIMEText(content, 'html', 'utf-8')
    message['From'] = sender
    message['To'] = ','.join(receivers)
    message['Subject'] = subject
    return message

上述代碼中,我們首先定義了SMTP伺服器的配置信息,並且實現了發送郵件的功能。發送郵件的過程中,我們使用了Python內置的email庫構建郵件內容。

二、郵件的構建

郵件的構建使用Python內置的email庫,主要包括郵件頭、郵件內容和附件等幾個部分。下面是一個郵件的基本結構:


import email

message = email.mime.multipart.MIMEMultipart()
message['From'] = 'xxxxx@xxx.com'
message['To'] = 'xxxxx@xxx.com'
message['Subject'] = '郵件標題'

# 郵件正文
text = '''Python SMTP郵箱發送測試\n'''

# 構造MIMEText對象
text_message = email.mime.text.MIMEText(text,'plain','utf-8')
message.attach(text_message)

# 添加附件
# with open('./test.txt', 'rb') as f:
#     file = email.mime.application.MIMEApplication(f.read(), _subtype = 'txt')
#     file.add_header('content-disposition', 'attachment', filename = 'test.txt')
#     message.attach(file)

郵件正文使用MIMEText對象構建,附件使用MIMEApplication對象構建,具體實現可以參考上述代碼和注釋。

三、郵件的發送

郵件構建完成後,就可以通過SMTP伺服器將郵件發送出去了。使用smtplib庫完成郵件發送的過程,下面是一個郵件發送的完整示例:


import smtplib
import email.mime.multipart
import email.mime.text
import email.mime.application

smtp_server = 'smtp.xxx.com'  # SMTP伺服器地址
smtp_port = 25  # SMTP伺服器埠號
smtp_user = 'xxxxx@xxx.com'  # SMTP伺服器用戶名
smtp_password = 'xxxxx'  # SMTP伺服器密碼

sender = 'xxxxx@xxx.com'
receivers = ['xxxxx@xxx.com']

message = email.mime.multipart.MIMEMultipart()
message['From'] = sender
message['To'] = ','.join(receivers)
message['Subject'] = 'Python SMTP郵箱發送測試'

# 郵件正文
text = '''Python SMTP郵箱發送測試\n'''

# 構造MIMEText對象
text_message = email.mime.text.MIMEText(text,'plain','utf-8')
message.attach(text_message)

# 添加附件
# with open('./test.txt', 'rb') as f:
#     file = email.mime.application.MIMEApplication(f.read(), _subtype = 'txt')
#     file.add_header('content-disposition', 'attachment', filename = 'test.txt')
#     message.attach(file)

try:
    smtp_conn = smtplib.SMTP(smtp_server, smtp_port)
    smtp_conn.login(smtp_user, smtp_password)
    smtp_conn.sendmail(sender, receivers, message.as_string())
    smtp_conn.quit()
    print("郵件發送成功")
except Exception as e:
    print("郵件發送失敗:", e)

郵件發送成功後,可以在收件人的收件箱中看到發送的郵件了。

四、總結

Python基礎SMTP伺服器搭建可以幫助我們快速實現郵件發送功能,利用Python內置的smtplib和email庫,可以輕鬆構建SMTP伺服器和郵件內容,並且將郵件發送出去。這對於我們進行郵件通知、監控等方面的工作非常有用。

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

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

相關推薦

  • 伺服器安裝Python的完整指南

    本文將為您提供伺服器安裝Python的完整指南。無論您是一位新手還是經驗豐富的開發者,您都可以通過本文輕鬆地完成Python的安裝過程。以下是本文的具體內容: 一、下載Python…

    編程 2025-04-29
  • STUN 伺服器

    STUN 伺服器是一個網路伺服器,可以協助網路設備(例如 VoIP 設備)解決 NAT 穿透、防火牆等問題,使得設備可以正常地進行數據傳輸。本文將從多個方面對 STUN 伺服器做詳…

    編程 2025-04-29
  • 解決docker-compose 容器時間和伺服器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與伺服器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • Java和Python哪個功能更好

    對於Java和Python這兩種編程語言,究竟哪一種更好?這個問題並沒有一個簡單的答案。下面我將從多個方面來對Java和Python進行比較,幫助讀者了解它們的優勢和劣勢,以便選擇…

    編程 2025-04-29
  • Python每次運行變數加一:實現計數器功能

    Python編程語言中,每次執行程序都需要定義變數,而在實際開發中常常需要對變數進行計數或者累加操作,這時就需要了解如何在Python中實現計數器功能。本文將從以下幾個方面詳細講解…

    編程 2025-04-28
  • Python strip()函數的功能和用法用法介紹

    Python的strip()函數用於刪除字元串開頭和結尾的空格,包括\n、\t等字元。本篇文章將從用法、功能以及與其他函數的比較等多個方面對strip()函數進行詳細講解。 一、基…

    編程 2025-04-28
  • 如何選擇MySQL伺服器文件許可權

    MySQL是一種流行的關係型資料庫管理系統。在安裝MySQL時,選擇正確的文件許可權是保證安全和性能的重要步驟。以下是一些指導您選擇正確許可權的建議。 一、許可權選擇 MySQL伺服器需…

    編程 2025-04-27
  • 全能的wpitl實現各種功能的代碼示例

    wpitl是一款強大、靈活、易於使用的編程工具,可以實現各種功能。下面將從多個方面對wpitl進行詳細的闡述,每個方面都會列舉2~3個代碼示例。 一、文件操作 1、讀取文件 fil…

    編程 2025-04-27
  • 如何將Python代碼部署到伺服器

    Python是一種高級編程語言,常被用於數據分析、機器學習、Web開發等不同領域的工作。但是,只有將Python代碼部署到伺服器上,才能讓其真正發揮作用。 一、選擇伺服器 要將Py…

    編程 2025-04-27
  • Python伺服器客戶端

    本文將從以下幾個方面對Python伺服器客戶端進行詳細闡述:socket編程、HTTP協議、Web框架、非同步IO。 一、socket編程 Python的socket模塊是為網路編程…

    編程 2025-04-27

發表回復

登錄後才能評論