天天看点

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自动化办公:预警信息自动识别自动群发邮箱,告别手动繁琐

继续阅读