在人力资源里每个月均会给员工发送上个月的工资情况(假设我的公司是15日发上个月的工资),一般工资条里包括:五险一金情况,工作天数,请假天数,扣税情况,应发工资,实发工资等。在一些规模很小的小公司里面一般是人力手动发送员工的工资条,若员工没有索要,人力一般也不会给你发送。下面我就编写程序实现这一功能(这里使用python开发):
1 导入相关的程序包
import csv
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import datetime
2 设置发送者邮件信息以及上月时间
# 获取当前时间的上个月年月信息
last_month = datetime.datetime.now() - datetime.timedelta(days=datetime.datetime.now().day)
year_month = str(last_month.year) + '年' + str(last_month.month) + '月'
# 设置SMTP服务器信息
smtp_server = 'smtp.163.com'
smtp_port = 50 # SMTP服务器设置
sender_email = 'XXXXXXXXX@163.com'
sender_password = 'ABCDEFGHIJK'
3 读取工资文件
假设工资文件是excel文件,这里读取excel文件发送给相应的员工
def send_emails_from_csv(csv_file_path):
with open(csv_file_path, mode='r', encoding='gbk') as csv_file:
reader = csv.DictReader(csv_file)
for row in reader:
# 提取邮箱地址
to_email = row.get('邮箱号')
print(to_email)
if not to_email:
continue # 跳过没有邮箱地址的行
# 创建邮件内容
subject = '{}工资条'.format(year_month)
body = (' {} 工资条信息,若有问题请及时联系人力资源 lucas \n 联系电话: 111111'.format(year_month))
# 创建一个带附件的实例
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = to_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
# 添加CSV数据作为邮件正文
msg.attach(MIMEText(str(row), 'plain', 'utf-8'))
# 连接到SMTP服务器并发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(sender_email, sender_password)
server.sendmail(sender_email, to_email, msg.as_string())
人力工资表:
4 程序主函数
# 主函数
if __name__ == '__main__':
csv_file_path = 'E:\工作\工资条.csv'
send_emails_from_csv(csv_file_path)
5 程序结果
上述程序每月14号发送,可以为人力实现将工资情况发送到每一位员工手里,让员工提前了解工资情况,有问题可以及时和人力反馈。