天天看點

Python自動化辦公:預警資訊自動識别自動群發郵箱,告别手動繁瑣

作者:人工智能取經人

在快節奏的現代職場中,項目延期是不可避免的挑戰之一。當項目無法如期完成時,及時通知相關方并解釋原因至關重要。然而,手動發送大量的延期通知郵件不僅效率低下,還容易出錯。幸運的是,Python自動化辦公技術為我們提供了解決方案。

Python作為一種強大的程式設計語言,在自動化辦公領域發揮着舉足輕重的作用。通過Python,我們可以編寫腳本程式,自動完成一些重複性的、繁瑣的任務,進而提高工作效率。在項目延期的情況下,我們可以利用Python編寫一個自動化群發郵件的程式,輕松解決通知問題。

最近,接到一個外貿公司的需求,批量訂單延期預警,當實際生産進度延後于計劃進度時,自動将訂單号、客戶、延期資訊等資訊自動群發給相關負責人。

首先,我使用Python的郵件發送庫,如smtplib和email等,來建構郵件發送的功能。通過配置SMTP伺服器、發件人郵箱、收件人郵箱等參數,我們可以實作郵件的自動化發送。同時,我們還可以使用Python的模闆引擎,如Jinja2等,來動态生成郵件内容,使得每封郵件都能夠根據具體項目的情況進行個性化定制。

接下來,我将訂單延期的相關資訊整合到一個資料源中,比如Excel表格或資料庫等。通過Python的資料處理庫,如pandas等,我們可以友善地讀取和處理這些資料。然後,我們可以編寫一個循環周遊資料源中的每一行資料,根據每行資料中的收件人郵箱和項目延期資訊,動态生成郵件内容并發送出去。

最後,我們可以将整個程式打包成一個可執行檔案或腳本,并将其內建到公司的自動化辦公系統中。當項目延期時,隻需運作該程式,即可自動完成郵件的群發工作,大大減輕了人工操作的負擔。

核心代碼

import pandas as pd
import datetime
import smtplib
# 處理郵件内容的庫,email.mine
from email.mime.text import MIMEText
import logging
import os




logging.basicConfig(filename='E:\code\Plan_m\log.log', level=logging.INFO,filemode = 'a', format = '【%(asctime)s】 【%(levelname)s】 >>>  %(message)s', datefmt = '%Y-%m-%d %H:%M')




# 郵箱屬性配置
def send_email(text_msg): 
    # 郵箱服務端
    mailserver = 'smtp.163.com'
    # 發件人-填寫自己的郵箱
    userName_SendMail = '[email protected]'
    # 郵箱發件授權碼-為發件人生成的授權碼,詳見下文
    userName_AuthCode = 'BOEFGGZHRAHEXGRN'
    # 定義郵件的接收者-我随便寫的,若收件人較多,可用清單表示
    per_email = email_dict.get(text_msg.get("跟進人","None"),"None")
    print(per_email)
    received_mail = ['[email protected]'] # 加入祖總 劉總 張總郵箱
    # final_received_mail = received_mail+per_email
    # print(final_received_mail)
    # 發送一封簡單的郵件,處理郵件内容
    content = f'你有一個工廠訂單即将預期,請及時處理。\n 工廠:{text_msg.get("工廠",None)},客戶:{text_msg.get("客戶",None)},樣品單号:{text_msg.get("樣品單号",None)},到期時間:{text_msg.get("計劃完成時間",None)},樣品明細:{text_msg.get("樣品明細",None)},責任人:{text_msg.get("跟進人",None)}'
    print(content)
    # 純文字形式的郵件内容的定義,通過MIMEText進行操作,plain為預設的文本的展示形式
    email = MIMEText(content, 'plain', 'utf-8')
    email['Subject'] = '即将延期的批量樣品單提醒'  # 定義郵件主題
    email['From'] = "通知機器人"  # 發件人
    email['To'] = ','.join(received_mail)  # 收件人(可以添加多個,若隻有一個收件人,可直接寫郵箱号)
    
    
    # 發送郵件
    
    # QQ郵箱的端口号是465,其他郵箱的端口号可自行百度,非QQ郵箱,一般使用SMTP即可,不需要有SSL
    smtp = smtplib.SMTP_SSL(mailserver, port=465)
    smtp.login(userName_SendMail, userName_AuthCode)
    smtp.sendmail(userName_SendMail, ','.join(received_mail), email.as_string())
    
    smtp.quit()
    logging.info('恭喜,郵件發送成功了')




today = datetime.date.today()
data_dir = 'E:\code\Plan_m\批量樣品跟進'
for excl in os.listdir(data_dir):
    try:
        excl_path = os.path.join(data_dir,excl)
        data = pd.read_excel(excl_path)
        data['計劃完成時間'] = pd.to_datetime(data['計劃完成時間'])
        for i,row in data.iterrows():
            try:
                diff_day = (row['計劃完成時間']-pd.Timestamp(today)).days
                # print(dict(row))
                logging.info(diff_day)
                if diff_day<=3:
                    send_email(dict(row))
                else:
                    logging.info("未延期")
            except Exception as e:
                logging.info(e)
                continue
                
    except Exception as e:
        logging.info(excl_path)
        logging.info(e)
        continue
# data = pd.read_excel("E:\Plan_m\批量樣品跟進計劃表.xlsx")
# # data['下單時間'] = pd.to_datetime(data['下單時間'])           

163郵箱安全碼設定【python代碼中的密碼使用這個而不是郵箱密碼】

Python自動化辦公:預警資訊自動識别自動群發郵箱,告别手動繁瑣
Python自動化辦公:預警資訊自動識别自動群發郵箱,告别手動繁瑣

代碼運作結果

Python自動化辦公:預警資訊自動識别自動群發郵箱,告别手動繁瑣
Python自動化辦公:預警資訊自動識别自動群發郵箱,告别手動繁瑣

繼續閱讀