使用python发工资条邮件的自动化方法

在现代企业中,每个月都需要发送工资条给员工,这项任务可能会非常繁琐。但是,你可以使用自动化工具来简化这个过程,提高效率。在本篇文章中,我将向你介绍如何使用Python编写一个工具,以自动发送工资条邮件给员工。

开篇故事

假设你是一家企业的财务部门负责人,每个月都要发送工资条给员工。这项任务需要耗费大量的时间和精力,而且容易出现错误。但是,有一天,你听说了一种自动化方法,可以让你轻松地完成这项任务,从此告别了繁琐的手工操作。这个方法就是使用Python编写一个自动发送工资条邮件的脚本。

准备工作

在开始之前,你需要进行一些准备工作:

  1. Python安装:确保你的计算机上已经安装了Python。如果没有安装,你可以从 Python官网 下载并安装最新版本的Python。

  2. 安装所需的库:你需要安装一些Python库,包括 openpyxl 用于处理Excel文件,以及 smtplibemail 用于发送邮件。你可以使用以下命令安装这些库:

    pip install openpyxl
    pip install secure-smtplib
  3. 准备工资数据:确保你有一个Excel文件,其中包含了员工的工资数据。这个文件应该按照一定的格式组织,包括员工姓名、部门、工资信息等。

  4. 邮件服务器信息:你需要知道你的企业邮件服务器的地址和登录信息,以便通过脚本发送邮件。

编写Python脚本

接下来,让我们开始编写Python脚本来自动发送工资条邮件。以下是一个示例脚本,你可以根据你的需求进行修改和扩展:

import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import datetime
import time
from openpyxl import load_workbook

# 获取当前时间和支付月份
now_time = datetime.datetime.now()
pay_month = datetime.datetime.now() - datetime.timedelta(28)
sent_time = time.time()

# 打印使用说明
print(f'''
****************************************************************************************
使用说明:
1、用于财务部门发送工资条。
2、Excel模板 文件名和文件格式不能更改(不能加列可以加行,不能出现合并单元格)
3、执行完成后会自动退出,并生成log.log 日志文件和 X年X月记录X.xls文件。
   生成文件目的是用于记录和检测正确性,可以删除或移走备份。
4、使用过程中如有问题请联系管理员 ytfty
                                                 Create by ytfty
****************************************************************************************
''')

# 判断文件是否存在
if os.path.exists("test.xlsx"):
    wb = load_workbook("test.xlsx", data_only=True)
    sheet = wb.active
else:
    input("数据文件 test.xlsl 不存在,请检查后重新运行本程序,程序结束,按回车退出程序")
    exit()

# 登录邮件服务器
smtp_obj = smtplib.SMTP_SSL("smtp.exmail.qq.com", 465)
smtp_obj.login("财务邮箱或专门发工资的人的邮箱@企业邮箱.com", "授权码")

# 从第2行开始按行循环遍历数据到内存
for row in sheet.iter_rows(min_row=2):
    row_text = ""
    mail_content = ""
    for cell in row:
        # 绑定内容单元格
        num = row[0]
        department = row[1]
        name = row[2]
        join_time = row[3]
        join_time_day = join_time.value
        work_age = row[4]
        work_level = row[5]
        base_pay = row[6]
        age_pay = row[7]
        # ...(省略其他工资信息)

        # 构建邮件内容
        mail_content = f'''
            <p> {name.value} 你好!{pay_month.year}年{pay_month.month}月工资表 </p>
            <!-- 添加工资信息表格 -->
            <!-- ...(省略表格内容) -->
        '''

    # 设置邮件头信息
    msg = MIMEText(mail_content, "html", "utf-8")
    msg["From"] = Header("财务发件人名", "utf-8")
    msg["To"] = Header(f"{personal_email}", "utf-8")
    msg["Cc"] = Header("这里写财务或是老板的邮箱@qq.com", "utf-8")
    msg["Subject"] = Header(f"{name.value} {pay_month.year}年{pay_month.month}月份工资条", "utf-8")

    # 发送邮件
    smtp_obj.sendmail("财务邮箱@qq.com", [personal_email, '抄送人的邮箱@qq.com'], msg.as_string())

    # 写日志
    f = open(file='sentlog.log',

 mode='a', encoding='utf-8')
    f.write(f"发送时间:{now_time}  收件人:{name.value} 邮件地址:{personal_email} 邮件主题:{pay_month.year}年{pay_month.month}月份工资表记录 已发送\n")
    f.close()
    print(f'''发送时间 {now_time}  收件人:{name.value} 邮件地址:{personal_email}  邮件主题:{pay_month.year}年{pay_month.month}月份工资表记录 已发送''')

# 另存一份记录
wb.save(f"{pay_month.year}年{pay_month.month}月份工资表记录{sent_time}.xlsx")
wait = input("程序执行完毕,按回车键退出!")

结语

使用这个自动化工具,你可以轻松地发送工资条邮件给员工,节省时间和减少错误。记得根据你的实际需求和企业环境对脚本进行适当的定制和配置。希望这个方法能够对你的工作有所帮助!

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

如何使用Python清除测试数据:一次性删除数据库中的记录

2023-9-24 22:23:40

指数词

提高文本相似度计算的效率:从TF-IDF到余弦相似度

2023-9-24 22:29:38

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索