admin管理员组文章数量:1559387
效果展示:
脚本优点:
可以自己手动通过弹窗选择对应工资条表格(函数在里面不影响)
自动通过标题行“姓名”“邮箱”找到对应信息,表格经常变动不影响
脚本使用腾讯企业邮箱指定的SMTP服务(通过SSL连接)
表格美观大方,竖排版,可以自己加上base64企业LOGO
发送成功与失败会有TXT记录,方便发生错误追踪
脚本代码:
# -- coding: utf-8 --
from openpyxl import load_workbook
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import sys
import time
import random
class Test:
def ck_log(self):
pass
def send_email(self, content, name, mail,sender,smtpObj,subject):
receivers = [mail]
print(sender)
print(receivers)
msg = MIMEText(content, 'html', 'utf-8')
msg['From'] = Header("XXX公司")
msg['To'] = Header(name)
msg['Subject'] = Header(subject, 'utf-8')
try:
smtpObj.sendmail(sender, receivers, msg.as_string())
print(f"===发送至 {name} 成功!")
with open("成功名单.txt","a+") as f:
f.write(f"{name}\n")
except smtplib.SMTPException as e:
print(f"===发送至 {name} 失败:"+str(e))
with open("失败名单.txt","a+") as f:
f.write(f"{name}\n")
def get_decimal_places(num):
import decimal
if '.' in str(num):
num = str(float(num))
d = decimal.Decimal(str(num))
#print("位数:",abs(d.as_tuple().exponent))
return abs(d.as_tuple().exponent)
if __name__ == '__main__':
user = "" #请输入邮箱账号
password = "" #请输入邮箱密码
try:
smtpObj = smtplib.SMTP_SSL(host="smtp.exmail.qq", port=465)
print("连接邮箱服务器成功!")
smtpObj.login(user=user, password=password)
print("登录账号成功!")
subject = input("请输入邮件名(例如 2023年02月工资条):")
print("您输入的是:", subject)
import tkinter as tk
from tkinter import filedialog
print("请在弹出窗口中选择工资表")
root = tk.Tk()
root.withdraw()
Filepath = filedialog.askopenfilename()
print('Filepath:', Filepath)
wb = load_workbook(Filepath, read_only=True, data_only=True)
print("表格下的所有sheet:")
print(wb.sheetnames)
o = Test()
cnt = 0
sheetname = input("请输入工资条所在的sheet名字(去除引号):")
if "'" in sheetname:
sheetname = str(eval(sheetname))
print("修正输入:", sheetname)
else:
print("您输入的是:", sheetname)
sheet = wb[sheetname]
thead = '<thead>'
sender = user
for row in sheet:
tbody = ''
cnt += 1
if cnt == 1:
topic_list = []
for cell in row:
topic_list.append(cell.value)
print(topic_list)
print(len(topic_list))
for w in range(len(topic_list)):
if topic_list[w] == "姓名":
name_row = w
print(name_row)
elif topic_list[w] == "邮箱":
mail_row = w
print(mail_row)
else:
for num in range(len(row)):
if row[num].value == None or row[num].value == 0 or row[num].value == "0":
inside = "-"
tbody += f'<tr><td>{topic_list[num]}</td><td>{inside}</td></tr>'
elif type(row[num].value) == type(20.00) and get_decimal_places(row[num].value) >= 5:
tbody += f'<tr><td>{topic_list[num]}</td><td>{round(row[num].value, 2)}</td></tr>'
else:
tbody += f'<tr><td>{topic_list[num]}</td><td>{row[num].value}</td></tr>'
name = row[name_row].value
mail = row[mail_row].value
content = f'''
<div style="text-align: center; width: 100%;">
<img alt="" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAE0AU0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA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qWDxOMlzT0XdmEqtOkrIWEktxWvbZ4qvb2ZGOK1ra0PHFfU0aMaMFCGyPPlJyd2WrXPFbNtniqdtan0rXtrY8cVqSXbbPvV2ooogi+9S0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR2oooAhkt0ftVCfTs9q1aKAOXn03P8NZ02l9flrt2RW6ioXtIm7UAefTaT/s1Rl0jP8ADXpD6YjdMVXfRwegFAHmz6QwPANMOnSj1/GvRW0X0Wozon+xWNTDUqnxxTLjOUdmeefYJR7/AIUv9nyHtj8K786H/sUo0P8A2K5v7Mwu/IX7ep3OCXTpT6/hUiaSxOSK7xdE/wBipV0UDqorop4WjT+CKREqkpbs4mLSP9mr0Olf7NdgmkqPSrCadGtbkHMQaX/s1pQaaR/DW4tvGvRakAA6DFAFGGwC9auJGqdBT6KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//Z" style="display: inline-block;width: 100px; height: 100px;" />
<h3>{name},您好</h3>''' + '''
<p>请查收您的工资条,有问题请及时与XX取得联系,谢谢合作!</p>
<style type="text/css">
table
{
border-collapse: collapse;
margin: 0 auto;
text-align:justify;
vertical-align:middle;
}
table td, table th
{
border: 1px solid #cad9ea;
text-align:center;
vertical-align:middle;
}
</style>
<table border='0.5px solid black'>
''' + f'''
{thead}
{tbody}
</table>
'''
#print(content)
if cnt >= 2:
print(name, mail)
o.send_email(content, name, mail,sender,smtpObj,subject)
else:
print("标题行不处理!")
some_time = random.randint(4, 8)
print(f"等待{some_time}秒")
time.sleep(some_time)
smtpObj.quit()
print("群发完毕,已退出邮箱登录...")
input("Please Enter to close this exe:")
except Exception as e:
print(f"运行出错,失败原因:{e}....")
time.sleep(600)
sys.exit(0)
本文标签: 腾讯企业邮箱员工工资条pythonforhrm
版权声明:本文标题:python_for_hrm:基于腾讯企业邮箱SMTP服务发送员工工资条(竖表) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727422296a1113717.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论