发工资啦!教你用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内置的字符串处理函数整理
Jan 29 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 Python
解决python文件字符串转列表时遇到空行的问题
Jul 09 Python
Python应用库大全总结
May 30 Python
解决Python设置函数调用超时,进程卡住的问题
Aug 08 Python
Python 中@property的用法详解
Jan 15 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
Django与pyecharts结合的实例代码
May 13 Python
tensorflow图像裁剪进行数据增强操作
Jun 30 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
Python hashlib模块的使用示例
Oct 09 Python
python语言time库和datetime库基本使用详解
Dec 25 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
phpmail类发送邮件函数代码
2012/02/20 PHP
php strnatcmp()函数的用法总结
2013/11/27 PHP
php浏览历史记录的方法
2015/03/10 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
同事打架检讨书
2014/02/04 职场文书
小学教师自我评价
2015/03/04 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
redis cluster支持pipeline的实现思路
2021/06/23 Redis
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
Python绘画好看的星空图
2022/03/17 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS