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

python3使用smtplib實(shí)現(xiàn)發(fā)送郵件功能

 更新時(shí)間:2018年05月22日 14:17:04   作者:數(shù)據(jù)分析之路  
這篇文章主要為大家詳細(xì)介紹了python3使用smtplib實(shí)現(xiàn)發(fā)送郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在之前的工作中,業(yè)務(wù)方做了一些調(diào)整,提出了對(duì)一部分核心指標(biāo)做更細(xì)致的拆分并定期產(chǎn)出的需求。出于某些原因,這部分?jǐn)?shù)據(jù)不太方便在報(bào)表上呈現(xiàn),因此就考慮通過(guò)郵件的方式定期給業(yè)務(wù)方發(fā)送數(shù)據(jù)。

當(dāng)時(shí)本來(lái)使用的是linux自帶的mail命令來(lái)實(shí)現(xiàn),然而某一天開(kāi)始,突然發(fā)現(xiàn)服務(wù)器上的郵件服務(wù)不可用了,于是就將腳本遷移到本地,并準(zhǔn)備使用Python3中的smtplib搭配crontab來(lái)實(shí)現(xiàn)。

首先,我們需要導(dǎo)入Python3標(biāo)準(zhǔn)庫(kù)中的smtplib包和email包來(lái)實(shí)現(xiàn)郵件的構(gòu)造和發(fā)送。

import smtplib
from email.mime.text import MIMEText
from email.header import Header

然后,我們需要配置郵件內(nèi)容:

message = MIMEText('郵件測(cè)試', 'plain', 'utf-8')
message['From'] = 'qixizhuang@126.com'
message['To'] = 'qixizhuang@126.com,751718003@qq.com'
subject = 'Python SMTP 郵件測(cè)試'
message['Subject'] = Header(subject, 'utf-8')

一個(gè)完整的郵件需要包括主題(subject)、正文、發(fā)件人和收件人:

message = MIMEText('郵件測(cè)試', 'plain', 'utf-8')用于設(shè)置郵件正文,email.mime.text.MIMEText的三個(gè)參數(shù)中,第一個(gè)是郵件正文,第二個(gè)是設(shè)置文本格式,第三個(gè)則用于設(shè)置文本編碼。

message['From'] = 'qixizhuang@126.com'用于設(shè)置發(fā)件人一欄。

message['To'] ='qixizhuang@126.com,751718003@qq.com'則用于設(shè)置收件人一欄。多個(gè)收件人之間直接用英文逗號(hào)隔開(kāi)即可。

message['Subject'] = Header(subject, 'utf-8')則用于設(shè)置郵件的主題。

此次郵件發(fā)送,我們以網(wǎng)易的126郵箱為例,因此我們需要配置一些服務(wù)器和賬號(hào)信息:

sender = 'qixizhuang@126.com'
receivers = ['qixizhuang@126.com', '751718003@qq.com']
mail_host = 'smtp.126.com'
mail_user = 'qixizhuang@126.com'
mail_pass = '********'

我們需要配置服務(wù)器、郵件賬號(hào)及密碼、以及發(fā)件人和收件人信息。

  • sender = 'qixizhuang@126.com'是用于配置發(fā)件人信息,注意此處的發(fā)件人與message[‘from']部分含義不同,message中的信息用于在郵箱中顯示,而此處則是使用sendmail方法時(shí)所需要的一個(gè)參數(shù)。即sender這一變量名并不重要,你甚至可以直接在sendmail中填入郵箱地址的字符串。
  • receivers = ['qixizhuang@126.com', '751718003@qq.com']則用于配置收件人信息,如果收件人只有一個(gè),那么我們可以直接用一個(gè)字符串來(lái)賦值;如果收件人有多個(gè)的話,那么sendmail需要接收一個(gè)列表。跟上一條類似,此處的含義與message[‘to']部分不同。
  • mail_host, mail_user, mail_pass則是用于設(shè)置郵件發(fā)送服務(wù)器以及郵箱的賬號(hào)密碼,跟上邊類似,變量名并不重要,不設(shè)置這幾個(gè)變量直接在sendmail中輸入字符串也是可以的。

最后,我們使用smtplib來(lái)發(fā)送郵件。

try:
 smtpObj = smtplib.SMTP() 
 smtpObj.connect(mail_host, 25) # 25 為 SMTP 端口號(hào)
 smtpObj.login(mail_user,mail_pass)
 smtpObj.sendmail(sender, receivers, message.as_string())
 print("郵件發(fā)送成功!")
except smtplib.SMTPException:
 print("郵件發(fā)送失??!")
  • smtpObj = smtplib.SMTP(); smtpObj.connect(mail_host, 25);也可以直接改成smtpObj = smtplib.SMTP(mail_host, 25) ,這是為了構(gòu)建一個(gè)SMTP對(duì)象。
  • smtpObj.login(mail_user,mail_pass)用于登錄郵箱。需要注意的是,這里的mail_pass不一定是你的郵箱密碼,很多郵箱服務(wù)包括網(wǎng)易郵箱提供了授權(quán)碼的功能,如果開(kāi)啟了此項(xiàng)功能,則此處需要將郵箱密碼改為授權(quán)碼。
  • smtpObj.sendmail(sender, receivers, message.as_string())則是使用SMTP對(duì)象的sendmail方法來(lái)發(fā)送郵件。

到此為止,我們已經(jīng)實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的郵件發(fā)送案例。

然而,在很多場(chǎng)景下,我們需要為郵件添加附件,則此種情況下,我們需要先創(chuàng)建MIMEMultipart()實(shí)例,然后構(gòu)造一個(gè)或多個(gè)附件,最終使用smtplib來(lái)發(fā)送。完整示例代碼如下:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

# 配置郵箱賬戶及收發(fā)人信息
sender = 'qixizhuang@126.com'
receivers = ['qixizhuang@126.com', '751718003@qq.com']
mail_host = 'smtp.126.com'
mail_user = 'qixizhuang@126.com'
mail_pass = 'password or authorization code here'

# 構(gòu)建MIMEMultipart對(duì)象,并在其中添加郵件內(nèi)容信息
message = MIMEMultipart()
message.attach(MIMEText('郵件測(cè)試', 'plain', 'utf-8'))
message['From'] = 'qixizhuang@126.com'
message['To'] = 'qixizhuang@126.com,751718003@qq.com'
subject = 'Python SMTP 郵件測(cè)試'
message['Subject'] = Header(subject, 'utf-8')

# 構(gòu)建附件內(nèi)容
attr = MIMEText(open('./test.txt', 'r').read())
attr['Content-Type'] = 'application/octet-stream'
attr['Content-Disposition'] = 'attachment; filename = ' + 'test.txt'
message.attach(attr)

# 發(fā)送郵件
try:
 smtpObj = smtplib.SMTP() 
 smtpObj.connect(mail_host, 25) # 25 為 SMTP 端口號(hào)
 smtpObj.login(mail_user,mail_pass)
 smtpObj.sendmail(sender, receivers, message.as_string())
 print("郵件發(fā)送成功!")
except smtplib.SMTPException:
 print("郵件發(fā)送失??!")

至此,我們已經(jīng)實(shí)現(xiàn)了帶附件的郵件發(fā)送,接下來(lái)通過(guò)crontab等工具即可完成定時(shí)發(fā)送郵件的任務(wù),在這里就不贅述了,需要的同學(xué)可以自行查閱crontab的使用。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Ubuntu18.04安裝 PyCharm并使用 Anaconda 管理的Python環(huán)境

    Ubuntu18.04安裝 PyCharm并使用 Anaconda 管理的Python環(huán)境

    這篇文章主要介紹了Ubuntu18.04安裝 PyCharm并使用 Anaconda 管理的Python環(huán)境的教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 初識(shí)Pytorch使用transforms的代碼

    初識(shí)Pytorch使用transforms的代碼

    tansforms功能類似于在計(jì)算機(jī)視覺(jué)流程里的圖像預(yù)處理部分的數(shù)據(jù)增強(qiáng),接下來(lái)通過(guò)代碼介紹下Pytorch使用transforms的詳細(xì)過(guò)程,感興趣的朋友一起看看吧
    2021-12-12
  • python中PIL安裝簡(jiǎn)單教程

    python中PIL安裝簡(jiǎn)單教程

    這篇文章主要為大家分享了python中PIL安裝簡(jiǎn)單教程,感興趣的小伙伴們可以參考一下
    2016-04-04
  • python enumerate內(nèi)置函數(shù)用法總結(jié)

    python enumerate內(nèi)置函數(shù)用法總結(jié)

    這篇文章主要介紹了python enumerate內(nèi)置函數(shù)用法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • python中l(wèi)ist循環(huán)語(yǔ)句用法實(shí)例

    python中l(wèi)ist循環(huán)語(yǔ)句用法實(shí)例

    這篇文章主要介紹了python中l(wèi)ist循環(huán)語(yǔ)句用法,以實(shí)例形式詳細(xì)介紹了Python針對(duì)list的解析,包含各種常見(jiàn)的遍歷操作及原理分析,需要的朋友可以參考下
    2014-11-11
  • Python打包文件夾的方法小結(jié)(zip,tar,tar.gz等)

    Python打包文件夾的方法小結(jié)(zip,tar,tar.gz等)

    這篇文章主要介紹了Python打包文件夾的方法,結(jié)合實(shí)例形式總結(jié)分析了Python打包成zip,tar,tar.gz等格式文件的操作技巧,需要的朋友可以參考下
    2016-09-09
  • Python使用Excel將數(shù)據(jù)寫入多個(gè)sheet

    Python使用Excel將數(shù)據(jù)寫入多個(gè)sheet

    這篇文章主要介紹了Python使用Excel將數(shù)據(jù)寫入多個(gè)sheet,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python常用列表數(shù)據(jù)結(jié)構(gòu)小結(jié)

    Python常用列表數(shù)據(jù)結(jié)構(gòu)小結(jié)

    這篇文章主要介紹了Python常用列表數(shù)據(jù)結(jié)構(gòu)小結(jié),很有參考借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • python中time庫(kù)使用詳解

    python中time庫(kù)使用詳解

    time庫(kù)是python中處理時(shí)間的標(biāo)準(zhǔn)庫(kù),下面這篇文章主要給大家介紹了關(guān)于python中time庫(kù)使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • python encrypt 實(shí)現(xiàn)AES加密的實(shí)例詳解

    python encrypt 實(shí)現(xiàn)AES加密的實(shí)例詳解

    在本篇文章里小編給大家分享的是關(guān)于python encrypt 實(shí)現(xiàn)AES加密的實(shí)例內(nèi)容,有興趣的朋友們可以參考下。
    2020-02-02

最新評(píng)論

东明县| 铁岭县| 淮北市| 格尔木市| 常熟市| 宜兰县| 万载县| 大埔县| 彰化县| 当阳市| 昌邑市| 丁青县| 柳江县| 黎川县| 伊川县| 平潭县| 灵山县| 永康市| 广汉市| 上林县| 精河县| 舞钢市| 阳城县| 华亭县| 从江县| 屯门区| 邮箱| 泽普县| 沅陵县| 布拖县| 遂昌县| 若尔盖县| 巴林左旗| 墨脱县| 北辰区| 宜春市| 崇左市| 玉林市| 革吉县| 吕梁市| 土默特右旗|