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

Python實戰(zhàn)之自動發(fā)送郵件的實現(xiàn)

 更新時間:2022年05月14日 10:18:50   作者:Ckend  
自動發(fā)送郵件能應(yīng)用于許多場景,下面本文就來和大家講講怎么用Python構(gòu)建一個自動發(fā)送郵件的腳本。感興趣的小伙伴可以動手嘗試一下

自動發(fā)送郵件能應(yīng)用于許多場景,比如我想要知道股票策略中的股票池是否有實時的更新,這時候如果再拉一遍數(shù)據(jù),跑一遍腳本,實在是太浪費時間了。為什么不把這一套流程放到服務(wù)器上,然后到點自動運行并發(fā)送郵件呢?

類似的應(yīng)用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人發(fā)送郵件;網(wǎng)站宕機了,實時發(fā)送郵件提醒;網(wǎng)站負載過高,發(fā)送郵件提醒......等等。

下面就來講講怎么用Python構(gòu)建一個自動發(fā)送郵件的腳本。

1.開啟SMTP服務(wù)

為了實現(xiàn)自動發(fā)送郵件的目的,我們需要在郵箱中開啟SMTP服務(wù):

這點很關(guān)鍵,別忘了去開啟SMTP,否則郵件是無法發(fā)送成功的。然后你還需要點擊下面生成授權(quán)碼,這個授權(quán)碼才是使用Python發(fā)送郵件時的真正密碼。

郵箱設(shè)定成功后,就可以開始腳本開發(fā)了。

2.準(zhǔn)備

開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南 進行安裝。

(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda,它內(nèi)置了Python和pip.

(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點

請選擇以下任一種方式輸入命令安裝依賴

1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。

2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。

3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.

pip?install?yagmail

看到 Successfully installed xxx 則說明安裝成功。本文全部源代碼可在后臺回復(fù):自動發(fā)送郵件 獲得。

3.編寫腳本

今天需要用到的模塊是yagmail,一個非常方便的Python郵件發(fā)送模塊,用這個模塊,你甚至能一行命令發(fā)送郵件:

yag = yagmail.SMTP(
????host='smtp.qq.com', user='你的郵箱',
????password='你的鑒權(quán)碼', smtp_ssl=True
).send(["發(fā)送對象"],?"主題",?"內(nèi)容")

為了讓這個發(fā)送郵件的方法更加具備可用性,我們將其封裝到一個類中:

import?time
import?yagmail

class?Mail:
????"""
????郵件相關(guān)類
????"""

????def?sendmail(self, msg, title, receivers):
????????"""
????????發(fā)送郵件
????????
????????Arguments:
????????????msg {str} -- 郵件正文
????????????title {str} -- 郵件標(biāo)題
????????????receivers {list} -- 郵件接收者,數(shù)組
????????"""

????????yag = yagmail.SMTP(
????????????host='smtp.qq.com', user='你的郵箱',
????????????password='你的鑒權(quán)碼', smtp_ssl=True
????????)

????????try:
????????????yag.send(receivers, title, msg)
????????????print("郵件發(fā)送成功")

????????except?BaseException?as?e:
????????????print(e)
????????????print("Error: 無法發(fā)送郵件")

這個類里還可以封裝很多其他東西,比如log函數(shù),用于顯示時間:

import?time
import?yagmail

class?Mail:
????"""
????郵件相關(guān)類
????"""

????def?log(self, content):
????????now_time = time.strftime(
????????????"%Y-%m-%d %H:%M:%S", time.localtime()
????????)
????????print(f'{now_time}:?{content}')

這樣,需要顯示時間的時候只需要調(diào)用self.log即可,優(yōu)化后的完整代碼如下:

import?time
import?yagmail

class?Mail:
????"""
????郵件相關(guān)類
????"""

????def?log(self, content):
????????now_time = time.strftime(
????????????"%Y-%m-%d %H:%M:%S", time.localtime()
????????)
????????print(f'{now_time}:?{content}')

????def?sendmail(self, msg, title, receivers):
????????"""
????????發(fā)送郵件
????????
????????Arguments:
????????????msg {str} -- 郵件正文
????????????title {str} -- 郵件標(biāo)題
????????????receivers {list} -- 郵件接收者,數(shù)組
????????"""

????????yag = yagmail.SMTP(
????????????host='smtp.qq.com', user='你的郵箱',
????????????password='你的鑒權(quán)碼', smtp_ssl=True
????????)

????????try:
????????????yag.send(receivers, title, msg)
????????????self.log("郵件發(fā)送成功")

????????except?BaseException?as?e:
????????????print?(e)
????????????self.log("Error: 無法發(fā)送郵件")

發(fā)送成功時顯示:

# PS D:\CODE\stock\api> python .\sendmail_yagmail.py
2021-06-21 00:00:00: 郵件發(fā)送成功

4.小例子

將剛剛編寫完的類保存為sendmail.py,接下來就可以嘗試一個小例子。我們用一個自動監(jiān)控網(wǎng)站是否宕機的小腳本做示例:

import?time
import?requests
from?sendmail?import?Mail

while?True:
????response = requests.get('https://pythondict.com')

????# 根據(jù)狀態(tài)碼判斷網(wǎng)站是否正常
????if?response.status_code !=?200:
????????Mail().sendmail(
????????????'哥, pythondict掛了',?'Python實用寶典網(wǎng)站異常監(jiān)控', ['你的郵箱']
????????)

????time.sleep(600)

通過 requests.get 請求網(wǎng)站,使用 response.status_code 得到狀態(tài)碼,200 為正常,其他情況均為異常。這個檢測每十分鐘運行一次,因此 time.sleep(600) .

就這樣,我們構(gòu)建起了一個非常簡單的網(wǎng)站異常監(jiān)控腳本,如果你真的要在服務(wù)器上運行這個腳本,請記得使用 nohup 讓其在后臺運行:

nohup python test.py &

到此這篇關(guān)于Python實戰(zhàn)之自動發(fā)送郵件的實現(xiàn)的文章就介紹到這了,更多相關(guān)Python自動發(fā)送郵件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論