吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎么用Python構建一個自動發送郵件的腳本

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-21 14:47 ? 次閱讀

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

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

下面就來講講怎么用Python構建一個自動發送郵件的腳本。

1.開啟SMTP服務

為了實現自動發送郵件的目的,我們需要在郵箱中開啟SMTP服務:

圖片

圖片

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

圖片

郵箱設定成功后,就可以開始腳本開發了。

2.準備

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

(可選1) 如果你用Python的目的是數據分析,可以直接安裝Anaconda:Python數據分析與挖掘好幫手—Anaconda,它內置了Python和pip.

(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優點:Python 編程的最好搭檔—VSCode 詳細指南

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

  1. Windows 環境 打開 Cmd (開始-運行-CMD)。
  2. MacOS 環境 打開 Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install yagmail

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

3.編寫腳本

今天需要用到的模塊是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: 郵件發送成功

4.小例子

將剛剛編寫完的類保存為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 &
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9308

    瀏覽量

    86071
  • 郵件
    +關注

    關注

    0

    文章

    32

    瀏覽量

    18823
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85040
  • 腳本
    +關注

    關注

    1

    文章

    392

    瀏覽量

    14938
收藏 人收藏

    評論

    相關推薦

    基于Python腳本的R語言的函數

    本文介紹了采用創建Python腳本,腳本模仿R風格的函數的方法來方便地進行統計。 是
    的頭像 發表于 10-12 09:33 ?2147次閱讀
    基于<b class='flag-5'>Python</b><b class='flag-5'>腳本</b>的R語言的函數

    介紹10Python自動腳本

    在這個自動化時代,我們有很多重復無聊的工作要做。想想這些你不再需要一次又一次地做的無聊的事情,讓它自動化,讓你的生活更輕松。那么在本文中,我將向您介紹 10
    發表于 10-17 09:27 ?963次閱讀

    10Python腳本來自動化你的日常任務

    今天浩道跟大家分享幾個關于python自動化日常工作的實用案例腳本
    發表于 10-25 09:04 ?741次閱讀

    10殺手級的Python自動腳本

    今天浩道跟大家分享10日常工作中用到的python自動腳本。讓你感受python簡單強大
    發表于 11-28 11:07 ?710次閱讀

    如何在沒有安裝郵件的公司電腦上LABVIEW來自動發送郵件

    如何在沒有安裝郵件的公司電腦上LABVIEW來自動發送郵件,請大神
    發表于 08-26 16:00

    python自動編寫腳本及分配引腳

    對于具有484引腳的芯片,如果手動一個一個設置引腳,必然是場噩夢。網上有使用Capture進行自動導入的帖子,不過沒有找到AD方面的帖子。本文使用
    發表于 07-23 06:49

    Python爬蟲8常用的爬蟲技巧分析總結

    python也差不多年多了,python應用最多的場景還是web快速開發、爬蟲、自動化運維:寫過簡單網站、寫過
    的頭像 發表于 08-18 11:45 ?5136次閱讀

    如何用Python制作自動發送程序

    怎么辦呢?是時候讓Python登場了! Python登場 這次我們來做一個自動發送微信的程序,在深夜十二點的時候給女朋友發去消息,也算是盡了
    的頭像 發表于 11-22 09:28 ?1534次閱讀

    10殺手級的Python自動腳本分享

    重復性任務總是耗時且無聊,想想你想要張地裁剪 100 張照片或 Fetch API、糾正拼寫和語法等工作,所有這些任務都很耗時,為什么不自動化它們呢?在今天的文章中,我將與你分
    的頭像 發表于 01-06 15:34 ?793次閱讀

    分享10實用的Python自動腳本

    重復性任務總是耗時且無聊,想想你想要張地裁剪 100 張照片或 Fetch API、糾正拼寫和語法等工作,所有這些任務都很耗時,為什么不自動化它們呢?在今天的文章中,我將與你分
    的頭像 發表于 01-21 15:58 ?1370次閱讀

    利用Python寫了監控服務器資源利用率的腳本

    研究了腳本,其主要目的是:基于 Python 編程語言來監控服務器的 CPU、內存、/目錄、/appslog、/bigdata目錄使用率以及網卡接收和
    的頭像 發表于 01-29 15:08 ?773次閱讀

    怎么Python構建自動發送郵件腳本

    呢? 類似的應用場景還有很多,不僅僅是在股票策略提醒上,比如定時向某些人發送郵件;網站宕機了,實時發送郵件提醒;網站負載過高,發送
    的頭像 發表于 10-31 16:36 ?589次閱讀
    怎么<b class='flag-5'>用</b><b class='flag-5'>Python</b><b class='flag-5'>構建</b><b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>自動</b><b class='flag-5'>發送</b><b class='flag-5'>郵件</b>的<b class='flag-5'>腳本</b>

    如何用Python批量定制化發送郵件

    封精美的元旦祝福郵件,但是郵件的內容——比如姓名、祝福語等應該怎樣動態渲染呢?答案是jinja2. jinja2 是
    的頭像 發表于 11-01 11:32 ?2630次閱讀

    利用Python發送郵件的 3 種方式

    Python 發送郵件的 3 種方式 2. 準備 以 126 郵箱為例,在編碼之前,我們需要開啟 SMTP 服務 然后,手動新增授權碼
    的頭像 發表于 11-02 11:37 ?1015次閱讀

    如何使用Python編寫腳本來自動發送郵件

    Python種非常流行的編程語言,可以用于多種用途,包括自動化任務。其中常見的自動化任務
    的頭像 發表于 12-07 11:36 ?1425次閱讀
    利澳百家乐官网娱乐城| 温州市百家乐官网鞋业| 乐百家百家乐官网游戏| 澳门百家乐官网路子分析| 娱乐百家乐官网的玩法技巧和规则 | 视频百家乐官网试玩| 金钱豹百家乐官网的玩法技巧和规则| 澳门百家乐娱乐城送彩金| 谁会玩百家乐的玩法技巧和规则| 大发888下载 客户端| 皇冠博彩有限公司| 真人百家乐官网园| 网上百家乐网址| 现场百家乐的玩法技巧和规则| 998棋牌游戏下载| 百家乐官网ipone| 3U百家乐官网的玩法技巧和规则 | 赢家百家乐的玩法技巧和规则| 大发888网页版下载| bet9全讯网查询| 百家乐官网送錢平臺| 百家乐庄闲出现几率| 大发888娱乐城大奖| 皇冠百家乐官网代理网| 任我赢百家乐官网软件| 百家乐龙虎斗| 博彩e族首页| 百家乐官网现金网信誉排名| 利高百家乐现金网| 大发888boaicai| 百家乐官网代理新闻| 择日自学24| 大发888娱乐场存款| 真人百家乐官网试玩账号| 百家乐论坛白菜| 大发888娱乐城加速器| 百家乐官网实时路单| 百家乐几点开奖| 乐透乐博彩论坛| 试玩区百家乐官网1000| 宝马百家乐的玩法技巧和规则|