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

使用Python程序自動發(fā)送郵件的完整流程

 更新時間:2026年04月16日 09:36:25   作者:科雷learning  
本文主要介紹了通過Python發(fā)送郵件的方法,包括開啟郵箱相關服務、設置授權碼、使用smtplib和email庫構建郵件并發(fā)送,詳細說明了不同郵箱對應的SMTP/POP3服務器地址、端口及使用注意事項,并提供了發(fā)送純文本、HTML格式及帶附件郵件的實例,需要的朋友可以參考下

01 準備工作

登錄自己的郵箱,在設置中,打開SMTP/POP3服務,并新增授權碼(授權碼個人保存好,后續(xù)郵件服務鑒權時會用到)。

以上是qq郵箱,126郵箱和163郵箱在設置中打開服務的截圖,供大家參考。

打開服務后,不同郵箱對應的服務地址和端口如下:

163郵箱的服務地址和端口如下:

126郵箱的SMTP服務器地址是smtp.126.com,POP3服務器地址為pop.126.com,imap.126.com;端口號同163郵箱地址

QQ郵箱的SMTP服務器地址是smtp.qq.com,端口號為587或465;POP3服務器地址為pop.qq.com,端口號為110或995;imap.qq.com,使用SSL,端口號143或993

SMTP(Simple Mail Transfer Protocol)是用來發(fā)送郵件的協(xié)議,而POP3(Post Office Protocol 3)是用來接收郵件的協(xié)議。

通過設置正確的郵箱地址和端口號,我們就可以成功收發(fā)郵件了。

02發(fā)送郵件程序用到的核心庫與函數(shù)介紹

Python主要通過smtplib(SMTP協(xié)議客戶端)和email(郵件內容構建)兩大庫實現(xiàn)郵件發(fā)送功能,核心函數(shù)功能如下:

1. smtplib.SMTP():創(chuàng)建SMTP連接

  • 功能:建立與郵件服務器的連接,支持TLS/SSL 加密。
  • 參數(shù):host:郵件服務器地址(如smtp.qq.com)port:端口號
  • 案例:連接QQ郵箱服務器
import smtplib
# 創(chuàng)建普通連接
server = smtplib.SMTP('smtp.qq.com', 587)
# 啟動TLS加密
server.starttls()
# 登錄郵箱
server.login('xxx@qq.com', 'password')
#創(chuàng)建SSL連接 填寫SSL端口號
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
# 登錄郵箱
server.login('xxx@qq.com', 'password')

注意:部分郵箱需使用授權碼代替密碼登錄,如QQ郵箱需在設置中開啟 “POP3/SMTP 服務” 獲取授權碼。

2. email.mime模塊:構建郵件內容

1)email.mime.text.MIMEText():創(chuàng)建文本郵件

參數(shù)介紹:

  • _text: 用于指定郵件的正文內容,可以是字符串形式的純文本或 HTML 代碼。
  • _subtype='plain' :表示文本類型。 'plain' : 代表純文本;'html': 代表html內容
  • _charset=None:表示郵件內容的字符編碼,默認是ascii,可自己傳入utf8等。
  • policy=None:policy參數(shù)可以接收email.policy模塊中定義的不同策略對象,用于指定如何解析郵件內容、處理頭部信息、格式化輸出等。默認為email.policy.compat32,全部內容為['Compat32','compat32','Policy','EmailPolicy','default','strict','SMTP','HTTP'],具體介紹參考附錄中的‘常用的policy策略’介紹。
from email.mime.text import MIMEText
# 創(chuàng)建純文本郵件內容
text = "這是一封測試郵件!"
msg = MIMEText(text, 'plain', 'utf-8')  
# 創(chuàng)建HTML郵件內容
html = """
<html>
<body>
<h1>歡迎訂閱周報</h1>
<p>本周熱點:...</p>
</body>
</html>
"""
msg = MIMEText(html, 'html')

2)email.mime.multipart.MIMEMultipart():創(chuàng)建多格式郵件(支持附件)

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
# 創(chuàng)建多格式
msg = MIMEMultipart()
#通過attach函數(shù) 添加純文本內容MIMEText
msg.attach(MIMEText("郵件正文", 'plain', 'utf-8'))
# 通過MIMEApplication添加附件test.xlsx
with open('test.xlsx', 'rb') as f:
    part = MIMEApplication(f.read(), Name='test.xlsx')
#設置附件名字
    part['Content-Disposition'] = f'attachment; filename="test.xlsx"'
#通過attach函數(shù) 添加附件MIMEApplication
msg.attach(part)

3. 郵件頭部設置

  • msg['Subject']:設置郵件主題
  • msg['From']:發(fā)件人郵箱
  • msg['To']:收件人郵箱(支持多個收件人,用逗號分隔)

4. server.sendmail():發(fā)送郵件

功能:將構建好的郵件發(fā)送給收件人。

參數(shù):from_addr:發(fā)件人郵箱

        to_addrs:收件人郵箱列表

        msg.as_string():將郵件對象轉換為字符串格式

案例:發(fā)送郵件

# 假設已創(chuàng)建msg郵件對象
server.sendmail('xx@xxx.com', ['xx1@xxx.com','xx2@xxx.com'], msg.as_string())
server.quit()

5、實際案例

案例 1:發(fā)送純文本郵件

import smtplib
from email.mime.text import MIMEText
# 創(chuàng)建連接
server = smtplib.SMTP('smtp.126.com', 25)
# 啟動TLS加密
server.starttls()
# 登錄郵箱
server.login('xxx1@xxx.com', 'xxxx')
# 創(chuàng)建純文本郵件內容
text = "這是一封測試郵件!"
msg = MIMEText(text, 'plain', 'utf-8')
msg['Subject'] = text
msg['From'] = 'xxx1@xxx.com'
msg['To'] = 'xx1@xx.com,xx2@xx.com'
#發(fā)送msg郵件對象
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()

實際使用中大家替換為自己的發(fā)件人郵箱和對方郵箱地址。

案例 2:發(fā)送帶HTML格式的郵件

import smtplib
from email.mime.text import MIMEText
# 創(chuàng)建連接
server = smtplib.SMTP('smtp.126.com', 25)
# 啟動TLS加密
server.starttls()
# 登錄郵箱
server.login('xxx1@xxx.com', 'xxxx')
# 創(chuàng)建純文本郵件內容
html = """
<html>
<body>
<h1>歡迎訂閱周報</h1>
<p>本周熱點:...</p>
</body>
</html>
"""
msg = MIMEText(html, 'html', 'utf-8')
msg['Subject'] = 'test'
msg['From'] = 'xxx1@xxx.com'
msg['To'] = 'xx1@xx.com,xx2@xx.com'
#發(fā)送msg郵件對象
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()

案例 3:發(fā)送附件郵件

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
# 創(chuàng)建連接
server = smtplib.SMTP('smtp.126.com', 25)
# 啟動TLS加密
server.starttls()
# 登錄郵箱
server.login('xxx1@xxx.com', 'xxxx')
# 創(chuàng)建多格式
msg = MIMEMultipart()
msg['Subject'] = text
msg['From'] = 'xxx1@xxx.com'
msg['To'] = 'xx1@xx.com,xx2@xx.com'
#通過attach函數(shù) 添加純文本內容MIMEText
msg.attach(MIMEText("郵件正文", 'plain', 'utf-8'))
# 通過MIMEApplication添加附件test.xlsx
with open('test.xlsx', 'rb') as f:
    part = MIMEApplication(f.read(), Name='test.xlsx')
#設置附件名字
    part['Content-Disposition'] = f'attachment; filename="test.xlsx"'
#通過attach函數(shù) 添加附件MIMEApplication
msg.attach(part)
#發(fā)送msg郵件對象
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()

03 附錄

常用的policy策略

1.email.policy.default

功能:默認策略,提供了較為通用的郵件處理方式。在解析郵件時,它會保留郵件頭部字段的原始大小寫,并使用系統(tǒng)默認的編碼方式進行處理。

適用場景:適用于大多數(shù)常規(guī)的郵件處理需求,不需要對郵件解析和構造進行特殊定制的場景。

2.email.policy.SMTP

功能:遵循 SMTP 協(xié)議標準的策略。該策略會將郵件頭部字段轉換為大寫,符合 SMTP 協(xié)議中對頭部字段的規(guī)范要求 ,并且在處理郵件內容時,會按照 SMTP 協(xié)議的規(guī)則進行編碼和換行處理。

適用場景:當需要嚴格遵循 SMTP 協(xié)議標準來發(fā)送或解析郵件時使用,例如與其他遵循 SMTP 協(xié)議的郵件服務器進行交互。

3.email.policy.compat32

功能:為了兼容 Python 3.2 及以前版本的郵件處理方式而設計的策略。它會將郵件頭部字段轉換為大寫,并對郵件內容進行一些兼容性的處理,以保持與舊版本的一致性。

適用場景:在需要與使用舊版 Python 郵件處理邏輯的系統(tǒng)進行交互,或者需要保證代碼在不同 Python 版本下行為一致時使用。

4.email.policy.SMTPUTF8

功能:在SMTP策略的基礎上,支持 UTF-8 編碼的郵件內容。它會正確處理包含非 ASCII 字符的郵件頭部和正文,確保在 SMTP 傳輸過程中不會出現(xiàn)編碼錯誤。

適用場景:當郵件內容包含多種語言文字、特殊字符,需要在 SMTP 傳輸中保證編碼正確性時使用。

掌握Python郵件功能,能為你的自動化工作流增添強大助力!無論是個人通知還是企業(yè)級應用,都可以通過靈活組合這些函數(shù)實現(xiàn)。

以上就是使用Python程序自動發(fā)送郵件的完整流程的詳細內容,更多關于Python自動發(fā)送郵件的資料請關注腳本之家其它相關文章!

相關文章

  • numpy.sum()坐標軸問題的解決

    numpy.sum()坐標軸問題的解決

    本文主要介紹了numpy.sum()坐標軸問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 解決Python3 控制臺輸出InsecureRequestWarning問題

    解決Python3 控制臺輸出InsecureRequestWarning問題

    這篇文章主要介紹了解決Python3 控制臺輸出InsecureRequestWarning的問題 ,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • Python?Playwright的使用詳解

    Python?Playwright的使用詳解

    本篇博客為大家介紹一款新的自動化測試工具,效果類似?selenium,但是這個模塊年輕。模塊名稱為?playwright-python,微軟開源的,是針對?Python?語言的純自動化工具,感興趣的可以了解一下
    2022-10-10
  • Pandas中Concat與Append的實現(xiàn)與區(qū)別小結

    Pandas中Concat與Append的實現(xiàn)與區(qū)別小結

    本文主要介紹了Pandas中Concat與Append的實現(xiàn)與區(qū)別小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • 使用Python實現(xiàn)小學生算術自動出題工具

    使用Python實現(xiàn)小學生算術自動出題工具

    這篇文章主要為大家詳細介紹了使用Python實現(xiàn)小學生算術自動出題工具,支持四種題型自由組合,自動去重,還能導出帶答案的Word文檔,需要的可以了解下
    2025-05-05
  • Python+Appium實現(xiàn)自動搶微信紅包

    Python+Appium實現(xiàn)自動搶微信紅包

    不知從何時開始微信紅包橫空出世,對于網速和手速慢的人只能在一旁觀望,做為python的學習者就是要運用編程解決生活和工作上的事情。于是我用python解決我們的手速問題python實現(xiàn)自動搶微信紅包,至于網速慢得那就只能自己花錢提升了。
    2021-05-05
  • python 對象真假值的實例(哪些視為False)

    python 對象真假值的實例(哪些視為False)

    這篇文章主要介紹了python 對象真假值的實例(哪些視為False),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Python中第三方庫Requests庫的高級用法詳解

    Python中第三方庫Requests庫的高級用法詳解

    雖然Python的標準庫中urllib2模塊已經包含了平常我們使用的大多數(shù)功能,但是它的API使用起來讓人實在感覺不好。它已經不適合現(xiàn)在的時代,不適合現(xiàn)代的互聯(lián)網了。而Requests的誕生讓我們有了更好的選擇。本文就介紹了Python中第三方庫Requests庫的高級用法。
    2017-03-03
  • Python中的閉包使用及作用

    Python中的閉包使用及作用

    這篇文章主要介紹了Python中的閉包使用及作用,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 在pycharm下設置自己的個性模版方法

    在pycharm下設置自己的個性模版方法

    今天小編就為大家分享一篇在pycharm下設置自己的個性模版方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評論

佛学| 咸丰县| 新安县| 余江县| 荔波县| 禄劝| 滦平县| 通榆县| 苏尼特右旗| 京山县| 抚宁县| 荔波县| 湖南省| 温泉县| 星座| 山丹县| 航空| 息烽县| 瑞安市| 农安县| 山阴县| 若尔盖县| 凤凰县| 苏尼特左旗| 土默特右旗| 盖州市| 开阳县| 永定县| 容城县| 宝兴县| 陵川县| 富平县| 郓城县| 绵竹市| 荣成市| 朔州市| 威海市| 江门市| 肥城市| 平塘县| 吴堡县|