亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

首先,我們需要導入Python3標準庫中的smtplib包和email包來實現(xiàn)郵件的構(gòu)造和發(fā)送。

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

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

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

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

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

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

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

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

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

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

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

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

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

try:
 smtpObj = smtplib.SMTP() 
 smtpObj.connect(mail_host, 25) # 25 為 SMTP 端口號
 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)建一個SMTP對象。
  • smtpObj.login(mail_user,mail_pass)用于登錄郵箱。需要注意的是,這里的mail_pass不一定是你的郵箱密碼,很多郵箱服務包括網(wǎng)易郵箱提供了授權(quán)碼的功能,如果開啟了此項功能,則此處需要將郵箱密碼改為授權(quán)碼。
  • smtpObj.sendmail(sender, receivers, message.as_string())則是使用SMTP對象的sendmail方法來發(fā)送郵件。

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

然而,在很多場景下,我們需要為郵件添加附件,則此種情況下,我們需要先創(chuàng)建MIMEMultipart()實例,然后構(gòu)造一個或多個附件,最終使用smtplib來發(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對象,并在其中添加郵件內(nèi)容信息
message = MIMEMultipart()
message.attach(MIMEText('郵件測試', 'plain', 'utf-8'))
message['From'] = 'qixizhuang@126.com'
message['To'] = 'qixizhuang@126.com,751718003@qq.com'
subject = 'Python SMTP 郵件測試'
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 端口號
 smtpObj.login(mail_user,mail_pass)
 smtpObj.sendmail(sender, receivers, message.as_string())
 print("郵件發(fā)送成功!")
except smtplib.SMTPException:
 print("郵件發(fā)送失??!")

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 200 行python 代碼實現(xiàn) 2048 游戲

    200 行python 代碼實現(xiàn) 2048 游戲

    2048這個小游戲大家都不陌生,應該都玩過,之前已經(jīng)在網(wǎng)上見過各個版本的2048實現(xiàn)了,有JAVA、HTML5等,今天我就給大家來一個我200 行python 代碼實現(xiàn)的2048 游戲,感興趣的朋友一起看看吧
    2018-01-01
  • 利用python模擬實現(xiàn)POST請求提交圖片的方法

    利用python模擬實現(xiàn)POST請求提交圖片的方法

    最近在利用python做接口測試,其中有個上傳圖片的接口,在網(wǎng)上各種搜索,各種嘗試。下面這篇文章主要給大家介紹了關(guān)于利用python模擬實現(xiàn)POST請求提交圖片的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • Python中ttkbootstrap的介紹與基本使用

    Python中ttkbootstrap的介紹與基本使用

    ttkbootstrap是一個基于?tkinter?的界面美化庫,使用這個工具可以開發(fā)出類似前端bootstrap風格的tkinter桌面程序,下面這篇文章主要給大家介紹了關(guān)于Python中ttkbootstrap的介紹與基本使用的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • TensorFlow2.X使用圖片制作簡單的數(shù)據(jù)集訓練模型

    TensorFlow2.X使用圖片制作簡單的數(shù)據(jù)集訓練模型

    這篇文章主要介紹了TensorFlow2.X使用圖片制作簡單的數(shù)據(jù)集訓練模型,本文通過截圖實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 基于python實現(xiàn)雙向鏈表

    基于python實現(xiàn)雙向鏈表

    這篇文章主要為大家詳細介紹了基于python實現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python實現(xiàn)擴展內(nèi)置類型的方法分析

    Python實現(xiàn)擴展內(nèi)置類型的方法分析

    這篇文章主要介紹了Python實現(xiàn)擴展內(nèi)置類型的方法,結(jié)合實例形式分析了Python嵌入內(nèi)置類型擴展及子類方式擴展的具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-10-10
  • TensorFlow深度學習之實現(xiàn)合并與分割的示例代碼

    TensorFlow深度學習之實現(xiàn)合并與分割的示例代碼

    這篇文章主要為大家詳細介紹了TensorFlow中實現(xiàn)合并與分割的四位函數(shù)以及它們的用法,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-07-07
  • 深入探究Python中變量的拷貝和作用域問題

    深入探究Python中變量的拷貝和作用域問題

    這篇文章主要介紹了Python中變量的拷貝和作用域問題,包括一些賦值、引用問題,以及相關(guān)函數(shù)在Python2和3版本之間的不同,需要的朋友可以參考下
    2015-05-05
  • 詳解Python?Requests庫中的重試策略

    詳解Python?Requests庫中的重試策略

    在Python中,requests庫是處理HTTP請求的標準工具之一,這篇文章主要為大家介紹了如何在requests中實現(xiàn)請求的自動重試,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • Python趣味爬蟲之爬取愛奇藝熱門電影

    Python趣味爬蟲之爬取愛奇藝熱門電影

    好久沒帶大家實現(xiàn)Python爬蟲了,文中有非常詳細的代碼示例,對不會爬蟲的小伙伴們很有幫助哦,需要的朋友可以參考下
    2021-06-06

最新評論