发工资啦!教你用Python实现邮箱自动群发工资条


Posted in Python onMay 10, 2021

一、excel的内容

发工资啦!教你用Python实现邮箱自动群发工资条

二、效果

发工资啦!教你用Python实现邮箱自动群发工资条

三、需要用的库:

  • openpyxl
  • smptlib
  • email.mime.text
  • email.header

四、实现步骤

4.1 获取excel表的数据

wb = load_workbook('数据表.xlsx')
sheet = wb.active
for row in sheet:
	for cell in row:
        print(cell.value)

4.2 编写邮件内容

使用字符串拼接成html

for row in sheet:
        tbody = '<tr>'
        cnt += 1
        if cnt == 1:
            for cell in row:
                thead += f'<th>{cell.value}</th>'
            thead += '</thead>'
        else:
            for cell in row:
                tbody += f'<td>{cell.value}</td>'
            tbody += '</tr>'
        name = row[0].value
        mail = row[1].value
        #  2.编写邮件内容
        content = f'''
            <h3>{name},你好</h3>
            <p>请查收你在2025年 5月1日 - 5月31 日的工资</p>
            <table border='1px solid black'>
            {thead}
            {tbody}
            </table>
        '''

4.3 发送邮件

# 发送邮件
class Test:
    def ck_log(self):
        pass

    def send_email(self, econtent, ename, mail):
        host = 'smtp.qq.com'
        user = '你的邮箱'
        password = '你的授权码'
        receivers = [mail]
        subject = '员工工资表'
        msg = MIMEText(econtent, 'html', 'utf-8')
        msg['From'] = Header('有限公司')
        msg['To'] = Header(ename)
        msg['Subject'] = Header(subject, 'utf-8')

        try:
            obj = smtplib.SMTP_SSL(host, 465)
            obj.login(user, password)
            obj.sendmail(user, receivers, msg.as_string())
            print("邮件发送成功!")
        except smtplib.SMTPException as e:
            print("Error: 无法发送邮件")
            print(e)

五、所有代码

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

'''
1.获取excel表的数据
2.编写邮件内容
3.发送邮件
'''


# 发送邮件
class Test:
    def ck_log(self):
        pass

    def send_email(self, econtent, ename, mail):
        host = 'smtp.qq.com'
        user = '1479898695@qq.com'
        password = 'bijoplffwqqlbaci'
        receivers = [mail]
        subject = '员工工资表'
        msg = MIMEText(econtent, 'html', 'utf-8')
        msg['From'] = Header('有限公司')
        msg['To'] = Header(ename)
        msg['Subject'] = Header(subject, 'utf-8')

        try:
            obj = smtplib.SMTP_SSL(host, 465)
            obj.login(user, password)
            obj.sendmail(user, receivers, msg.as_string())
            print("邮件发送成功!")
        except smtplib.SMTPException as e:
            print("Error: 无法发送邮件")
            print(e)


if __name__ == '__main__':
    wb = load_workbook('数据表.xlsx')
    o = Test()
    cnt = 0
    sheet = wb.active
    thead = '<thead>'
    #  1.获取excel表的数据
    for row in sheet:
        tbody = '<tr>'
        cnt += 1
        if cnt == 1:
            for cell in row:
                thead += f'<th>{cell.value}</th>'
            thead += '</thead>'
        else:
            for cell in row:
                tbody += f'<td>{cell.value}</td>'
            tbody += '</tr>'
        name = row[0].value
        mail = row[1].value
        #  2.编写邮件内容
        content = f'''
            <h3>{name},你好</h3>
            <p>请查收你在2025年 5月1日 - 5月31 日的工资</p>
            <table border='1px solid black'>
            {thead}
            {tbody}
            </table>
        '''
        #  3.发送邮件
        if cnt == 3:
            print('content:', content)
            print(name, mail)
            o.send_email(content, name, mail)

到此这篇关于发工资啦!教你用Python实现邮箱自动群发工资条的文章就介绍到这了,更多相关Python自动群发工资条内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python简单实现刷新智联简历
Mar 30 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
Python使用paramiko操作linux的方法讲解
Feb 25 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
python实现简单图片物体标注工具
Mar 18 Python
python循环定时中断执行某一段程序的实例
Jun 29 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
Python类的继承super相关原理解析
Oct 22 Python
python各种excel写入方式的速度对比
Nov 10 Python
django中cookiecutter的使用教程
Dec 03 Python
在Django中使用MQTT的方法
May 10 #Python
十个Python自动化常用操作,即拿即用
May 10 #Python
Django开发RESTful API实现增删改查(入门级)
May 10 #Python
Python中X[:,0]和X[:,1]的用法
May 10 #Python
Python Django搭建文件下载服务器的实现
详解python的内存分配机制
May 10 #Python
python-for x in range的用法(注意要点、细节)
May 10 #Python
You might like
多文件上传的例子
2006/10/09 PHP
用PHP读取超大文件的实例代码
2012/04/01 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
PHP函数积累总结
2019/03/19 PHP
sina的lightbox效果。
2007/01/09 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
python将字符串转换成数组的方法
2015/04/29 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
python能开发游戏吗
2020/06/11 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
python的数学算法函数及公式用法
2020/11/18 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
高中运动会广播稿
2014/01/21 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
优秀党支部申报材料
2014/12/24 职场文书
第一军规观后感
2015/06/12 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
VMware虚拟机安装 Windows Server 2022的详细图文教程
2022/09/23 Servers