<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
自動傳送郵件能應用於許多場景,比如我想要知道股票策略中的股票池是否有實時的更新,這時候如果再拉一遍資料,跑一遍指令碼,實在是太浪費時間了。為什麼不把這一套流程放到伺服器上,然後到點自動執行並行送郵件呢?
類似的應用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人傳送郵件;網站宕機了,實時傳送郵件提醒;網站負載過高,傳送郵件提醒......等等。
下面就來講講怎麼用Python構建一個自動傳送郵件的指令碼。
為了實現自動傳送郵件的目的,我們需要在郵箱中開啟SMTP服務:
這點很關鍵,別忘了去開啟SMTP,否則郵件是無法傳送成功的。然後你還需要點選下面生成授權碼,這個授權碼才是使用Python傳送郵件時的真正密碼。
郵箱設定成功後,就可以開始指令碼開發了。
開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,可以存取這篇文章:超詳細Python安裝指南 進行安裝。
(可選1) 如果你用Python的目的是資料分析,可以直接安裝Anaconda,它內建了Python和pip.
(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優點
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環境 開啟 Cmd (開始-執行-CMD)。
2. MacOS 環境 開啟 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用介面下方的Terminal.
pip install yagmail
看到 Successfully installed xxx 則說明安裝成功。本文全部原始碼可在後臺回覆:自動傳送郵件 獲得。
今天需要用到的模組是yagmail,一個非常方便的Python郵件傳送模組,用這個模組,你甚至能一行命令傳送郵件:
yag = yagmail.SMTP( host='smtp.qq.com', user='你的郵箱', password='你的鑑權碼', smtp_ssl=True ).send(["傳送物件"], "主題", "內容")
為了讓這個傳送郵件的方法更加具備可用性,我們將其封裝到一個類中:
import time import yagmail class Mail: """ 郵件相關類 """ def sendmail(self, msg, title, receivers): """ 傳送郵件 Arguments: msg {str} -- 郵件正文 title {str} -- 郵件標題 receivers {list} -- 郵件接收者,陣列 """ yag = yagmail.SMTP( host='smtp.qq.com', user='你的郵箱', password='你的鑑權碼', smtp_ssl=True ) try: yag.send(receivers, title, msg) print("郵件傳送成功") except BaseException as e: print(e) print("Error: 無法傳送郵件")
這個類裡還可以封裝很多其他東西,比如log函數,用於顯示時間:
import time import yagmail class Mail: """ 郵件相關類 """ def log(self, content): now_time = time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime() ) print(f'{now_time}: {content}')
這樣,需要顯示時間的時候只需要呼叫self.log即可,優化後的完整程式碼如下:
import time import yagmail class Mail: """ 郵件相關類 """ 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): """ 傳送郵件 Arguments: msg {str} -- 郵件正文 title {str} -- 郵件標題 receivers {list} -- 郵件接收者,陣列 """ yag = yagmail.SMTP( host='smtp.qq.com', user='你的郵箱', password='你的鑑權碼', smtp_ssl=True ) try: yag.send(receivers, title, msg) self.log("郵件傳送成功") except BaseException as e: print (e) self.log("Error: 無法傳送郵件")
傳送成功時顯示:
# PS D:CODEstockapi> python .sendmail_yagmail.py 2021-06-21 00:00:00: 郵件傳送成功
將剛剛編寫完的類儲存為sendmail.py,接下來就可以嘗試一個小例子。我們用一個自動監控網站是否宕機的小指令碼做範例:
import time import requests from sendmail import Mail while True: response = requests.get('https://pythondict.com') # 根據狀態碼判斷網站是否正常 if response.status_code != 200: Mail().sendmail( '哥, pythondict掛了', 'Python實用寶典網站異常監控', ['你的郵箱'] ) time.sleep(600)
通過 requests.get 請求網站,使用 response.status_code 得到狀態碼,200 為正常,其他情況均為異常。這個檢測每十分鐘執行一次,因此 time.sleep(600) .
就這樣,我們構建起了一個非常簡單的網站異常監控指令碼,如果你真的要在伺服器上執行這個指令碼,請記得使用 nohup 讓其在後臺執行:
nohup python test.py &
到此這篇關於Python實戰之自動傳送郵件的實現的文章就介紹到這了,更多相關Python自動傳送郵件內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45