看电脑系统之家

您现在的位置是:首页 > 编程教程 > 正文

编程教程

批量发工资怎么操作_利用python轻松解决用邮箱批量发工资条

kanmain2020-10-18编程教程1407
每次要发工资条公司负现工资条的同事都很烦恼,二百多号人,只能一个个人去发.于是她问我有什么办法可以批量发工资条的,我说你要收集员工的邮箱地址.然后我花半天写一个工具给你,她说早知道之前就找你啦.下面费

每次要发工资条公司负现工资条的同事都很烦恼,二百多号人,只能一个个人去发.于是她问我有什么办法可以批量发工资条的,我说你要收集员工的邮箱地址.然后我花半天写一个工具给你,她说早知道之前就找你啦.

下面费话不多说,直接上代码.

以下需要安装pandas库以及依赖库.

如有不懂配置或其它问题可以发邮件给我大家交流一下,我的qq邮箱:447282087

import os,datetime,time
import pandas as pd
import tkinter as tk
from tkinter import filedialog
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

def mail(uname,m,txt,tomail,upass):
    my_sender='test126.com'    # 发件人邮箱账号 
    my_pass = upass    # 发件人邮箱密码(当时申请smtp给的口令)
    my_user = tomail     # 收件人邮箱账号,我这边发送给自己
    ret=True
    try:
        msg=MIMEText(txt,'html','utf-8')
        msg['From']=formataddr(["发件人昵称",my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        msg['To']=formataddr(["收件人昵称",my_user])              # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        msg['Subject']="%s %s月份工资条" %(uname,m)                # 邮件的主题,也可以说是标题

        server=smtplib.SMTP_ssl("smtp.126.com", 465)  # 发件人邮箱中的SMTP服务器,端口是465
        server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
        server.sendmail(my_sender,[my_user,],msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()# 关闭连接
    except Exception:# 如果 try 中的语句没有执行,则会执行下面的 ret=False
        ret=False
    return ret


def ReadFile(filePath):

    print('打开文件:%s' % filePath)
    filePath = filePath.replace('\', '/')
    if (os.path.exists(filePath) == False):
        print('excel文件:%s  不存在  %s' % (filePath, datetime.datetime.now()))
    # dfxsd = pd.read_excel(filePath)

    df = pd.read_excel(filePath, dtype=str)
    err_i = 0
    count_i = 0
    err_name = ''
    m = input('请输入工资条的月份:')
    upass = input('请输入你的邮箱密码:')
    title = ['编号', '姓名', '应出勤天数', '实际出勤(天)', '基本底薪', '实际底薪', '绩效提成', '外访补贴',
                                      '其他补贴', '加班补贴(天数)', '加班补贴(金额)', '应发工资合计', '事假(天)', '事假(金额)',
                                      '扣费明细', '扣下其他','本月工资合计', '社保缴纳金额(公司)', '社保缴纳金额(个人)', '公积金缴纳金额(公司)',
                                      '公积金缴纳金额(个人)', '本月实缴税额', '实发工资', '个人邮箱']
    for i in df.index.values:  # 获取行号的索引,并对其进行遍历:
        # 枫软  备注1 = 客户编号(长度为15) , 备注2 = 批次,  备注3 = 合同编号(长度最大为5位数), 相关备注 = 包含(产品代码信息,产品代码一般为13位)
        row_data = df.loc[i].reindex(title)
        CustomerNumber = ''

        ContractNumber = ''
        ProductCode = ''
        html = '<table border="1">'
        html += '<tr>'
        for titlestr in title:
            html += '<td>%s</td>' %titlestr
        html += '</tr>'
        html += '<tr>'
        for titlestr in title:
            html += '<td>%s</td>' % row_data['%s' %titlestr]
        html += '</tr>'
        html += '</table>'
        if(row_data['个人邮箱']!='nan' or row_data['个人邮箱']!=''):
            mail(row_data['姓名'],m,html,row_data['个人邮箱'],upass)
            time.sleep(1)
        else:
            err_name += ',' + row_data['姓名']
        print(html,'')
    print('发送失败的人员:'+err_name)








def rep(strs):  # 替换字符
    strs = str(strs)
    strs = strs.replace(' ', '')
    strs = strs.replace('   ', '')
    strs = strs.replace('
', '')
    strs = strs.replace('
', '')
    strs = strs.replace("'", '')
    strs = strs.replace('"', '')
    strs = strs.replace('\', '\\')
    strs = strs.replace('/', '')
    strs = strs.replace('/', '')
    strs = strs.replace('%', '')
    strs = strs.replace(':', '')
    strs = strs.replace(':', '')
    strs = strs.replace('32', '\Z')
    strs = strs.replace('?', '')
    strs = strs.replace('☎', '')
    return strs


def getLocalFile():  # 获取文件
    root = tk.Tk()
    root.withdraw()
    filePath = filedialog.askopenfilename()
    print('文件路径:', filePath)
    return filePath



input_file = getLocalFile()
ReadFile(input_file)



第一步:运行程序选择做好的工资条excel表,然后点击打开

2.jpg


第二步:输入工资的月份与箱邮密码,这里我输入9月份.

3.jpg


下面是工资条的excel模板

1.jpg

关于批量发工资怎么操作_利用python轻松解决用邮箱批量发工资条的文章就详细介绍到这里啦,希望这篇文章解决方法能够帮助你解决问题,如果这篇文章对你有所帮助或者你想要学习更多电脑知识与电脑操作技巧,欢迎你收藏本网站。