发工资啦!教你用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库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
Python logging模块用法示例
Aug 28 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
May 11 Python
python中if及if-else如何使用
Jun 02 Python
python如何保存文本文件
Jun 07 Python
python如何安装下载后的模块
Jul 03 Python
python-地图可视化组件folium的操作
Dec 14 Python
python 模块重载的五种方法
Apr 24 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
php相当简单的分页类
2008/10/02 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
2016/12/17 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
JS实现TITLE悬停长久显示效果完整示例
2020/02/11 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
优秀员工自荐书
2013/12/19 职场文书
教师队伍管理制度
2014/01/14 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
大学生职业生涯规划书汇总
2014/03/20 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python