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

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

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

01 準(zhǔn)備工作

登錄自己的郵箱,在設(shè)置中,打開(kāi)SMTP/POP3服務(wù),并新增授權(quán)碼(授權(quán)碼個(gè)人保存好,后續(xù)郵件服務(wù)鑒權(quán)時(shí)會(huì)用到)。

以上是qq郵箱,126郵箱和163郵箱在設(shè)置中打開(kāi)服務(wù)的截圖,供大家參考。

打開(kāi)服務(wù)后,不同郵箱對(duì)應(yīng)的服務(wù)地址和端口如下:

163郵箱的服務(wù)地址和端口如下:

126郵箱的SMTP服務(wù)器地址是smtp.126.com,POP3服務(wù)器地址為pop.126.com,imap.126.com;端口號(hào)同163郵箱地址

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

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

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

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

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

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

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

注意:部分郵箱需使用授權(quán)碼代替密碼登錄,如QQ郵箱需在設(shè)置中開(kāi)啟 “POP3/SMTP 服務(wù)” 獲取授權(quán)碼。

2. email.mime模塊:構(gòu)建郵件內(nèi)容

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

參數(shù)介紹:

  • _text: 用于指定郵件的正文內(nèi)容,可以是字符串形式的純文本或 HTML 代碼。
  • _subtype='plain' :表示文本類型。 'plain' : 代表純文本;'html': 代表html內(nèi)容
  • _charset=None:表示郵件內(nèi)容的字符編碼,默認(rèn)是ascii,可自己傳入utf8等。
  • policy=None:policy參數(shù)可以接收email.policy模塊中定義的不同策略對(duì)象,用于指定如何解析郵件內(nèi)容、處理頭部信息、格式化輸出等。默認(rèn)為email.policy.compat32,全部?jī)?nèi)容為['Compat32','compat32','Policy','EmailPolicy','default','strict','SMTP','HTTP'],具體介紹參考附錄中的‘常用的policy策略’介紹。
from email.mime.text import MIMEText
# 創(chuàng)建純文本郵件內(nèi)容
text = "這是一封測(cè)試郵件!"
msg = MIMEText(text, 'plain', 'utf-8')  
# 創(chuàng)建HTML郵件內(nèi)容
html = """
<html>
<body>
<h1>歡迎訂閱周報(bào)</h1>
<p>本周熱點(diǎn):...</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()
#通過(guò)attach函數(shù) 添加純文本內(nèi)容MIMEText
msg.attach(MIMEText("郵件正文", 'plain', 'utf-8'))
# 通過(guò)MIMEApplication添加附件test.xlsx
with open('test.xlsx', 'rb') as f:
    part = MIMEApplication(f.read(), Name='test.xlsx')
#設(shè)置附件名字
    part['Content-Disposition'] = f'attachment; filename="test.xlsx"'
#通過(guò)attach函數(shù) 添加附件MIMEApplication
msg.attach(part)

3. 郵件頭部設(shè)置

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

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

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

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

        to_addrs:收件人郵箱列表

        msg.as_string():將郵件對(duì)象轉(zhuǎn)換為字符串格式

案例:發(fā)送郵件

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

5、實(shí)際案例

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

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

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

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

import smtplib
from email.mime.text import MIMEText
# 創(chuàng)建連接
server = smtplib.SMTP('smtp.126.com', 25)
# 啟動(dòng)TLS加密
server.starttls()
# 登錄郵箱
server.login('xxx1@xxx.com', 'xxxx')
# 創(chuàng)建純文本郵件內(nèi)容
html = """
<html>
<body>
<h1>歡迎訂閱周報(bào)</h1>
<p>本周熱點(diǎn):...</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郵件對(duì)象
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)
# 啟動(dòng)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'
#通過(guò)attach函數(shù) 添加純文本內(nèi)容MIMEText
msg.attach(MIMEText("郵件正文", 'plain', 'utf-8'))
# 通過(guò)MIMEApplication添加附件test.xlsx
with open('test.xlsx', 'rb') as f:
    part = MIMEApplication(f.read(), Name='test.xlsx')
#設(shè)置附件名字
    part['Content-Disposition'] = f'attachment; filename="test.xlsx"'
#通過(guò)attach函數(shù) 添加附件MIMEApplication
msg.attach(part)
#發(fā)送msg郵件對(duì)象
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()

03 附錄

常用的policy策略

1.email.policy.default

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

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

2.email.policy.SMTP

功能:遵循 SMTP 協(xié)議標(biāo)準(zhǔn)的策略。該策略會(huì)將郵件頭部字段轉(zhuǎn)換為大寫(xiě),符合 SMTP 協(xié)議中對(duì)頭部字段的規(guī)范要求 ,并且在處理郵件內(nèi)容時(shí),會(huì)按照 SMTP 協(xié)議的規(guī)則進(jìn)行編碼和換行處理。

適用場(chǎng)景:當(dāng)需要嚴(yán)格遵循 SMTP 協(xié)議標(biāo)準(zhǔn)來(lái)發(fā)送或解析郵件時(shí)使用,例如與其他遵循 SMTP 協(xié)議的郵件服務(wù)器進(jìn)行交互。

3.email.policy.compat32

功能:為了兼容 Python 3.2 及以前版本的郵件處理方式而設(shè)計(jì)的策略。它會(huì)將郵件頭部字段轉(zhuǎn)換為大寫(xiě),并對(duì)郵件內(nèi)容進(jìn)行一些兼容性的處理,以保持與舊版本的一致性。

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

4.email.policy.SMTPUTF8

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

適用場(chǎng)景:當(dāng)郵件內(nèi)容包含多種語(yǔ)言文字、特殊字符,需要在 SMTP 傳輸中保證編碼正確性時(shí)使用。

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

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

相關(guān)文章

  • numpy.sum()坐標(biāo)軸問(wèn)題的解決

    numpy.sum()坐標(biāo)軸問(wèn)題的解決

    本文主要介紹了numpy.sum()坐標(biāo)軸問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 解決Python3 控制臺(tái)輸出InsecureRequestWarning問(wèn)題

    解決Python3 控制臺(tái)輸出InsecureRequestWarning問(wèn)題

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

    Python?Playwright的使用詳解

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

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

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

    使用Python實(shí)現(xiàn)小學(xué)生算術(shù)自動(dòng)出題工具

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

    Python+Appium實(shí)現(xiàn)自動(dòng)搶微信紅包

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

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

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

    Python中第三方庫(kù)Requests庫(kù)的高級(jí)用法詳解

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

    Python中的閉包使用及作用

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

    在pycharm下設(shè)置自己的個(gè)性模版方法

    今天小編就為大家分享一篇在pycharm下設(shè)置自己的個(gè)性模版方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07

最新評(píng)論

宣威市| 太仆寺旗| 柘城县| 涞源县| 三河市| 阳城县| 丹寨县| 华亭县| 喀什市| 隆回县| 辉县市| 西吉县| 万源市| 海淀区| 酒泉市| 宜兰县| 丹阳市| 祁阳县| 昂仁县| 东城区| 巩留县| 岳阳县| 英山县| 雷州市| 曲松县| 乳源| 淳化县| 原平市| 安西县| 应城市| 大冶市| 虹口区| 庄浪县| 榆树市| 景东| 旬阳县| 资源县| 息烽县| 时尚| 鞍山市| 沛县|