鱼C论坛

 找回密码
 立即注册
查看: 1591|回复: 0

[技术交流] 使用Python发送工资明细邮件

[复制链接]
发表于 2023-4-24 22:08:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有一份工资明细的电子表格文件,每个员工对应有邮箱账号,现通过Python代码,实现把工资明细(含表头即工资项目)发送到每个员工的邮箱中。

工资表Salary.xlsx结构如图:

代码如下:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

import openpyxl

file = r'.\Email\Salary.xlsx'
wb = openpyxl.load_workbook(file)
ws = wb['Sheet1']

# 设置登录及服务器信息
mail_host = 'smtp.163.com'
mail_user = '153*****123'
mail_pass = 'BJX*******UDVEG'                #验证码(非邮箱登录密码)
sender = '153*****123@163.com'

result = list(ws.iter_rows(values_only=True))
title = result[0]  # 通过之前返回数据可以看出第一行是标题 我们直接索引获取第一行
datas = result[1:]  # 剩下除了第一行就是用例数据了 直接截取
for row in datas:
        dict1 = dict(zip(title, row))
        name = dict1.get('姓名', '未发现"姓名"字段')
        receivers = dict1.get('邮箱', '未发现"邮箱"字段')
        detail = ''
        for k, v in dict1.items():
                detail += str(k) + ":" + str(v) + '\n'                将工资项目与明细转换为文本字符

        # 设置email信息,添加一个MIMEmultipart类,处理正文及附件
        message = MIMEMultipart()
        message['From'] = sender
        message['To'] = receivers
        message['Subject'] = f'亲爱的{name},这是您本月应得报酬,您辛苦了,感谢您的努力付出!'
        message.attach(MIMEText(detail, 'plain', 'utf-8'))
        try:
                smtpObj = smtplib.SMTP()
                smtpObj.connect(mail_host, 25)
                smtpObj.login(mail_user, mail_pass)
                smtpObj.sendmail(sender, receivers, message.as_string())
                print(f'{name}的邮件发送成功!')
                smtpObj.quit()
        except smtplib.SMTPException as err:
                print(f'{name}的邮件发送失败,请检查相关设置!', err)

    欢迎交流指正!
QQ图片20230424220152.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-7 01:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表