发工资啦!教你用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实现自动为照片添加日期并分类的方法
Sep 30 Python
R vs. Python 数据分析中谁与争锋?
Oct 18 Python
python实现感知器算法(批处理)
Jan 18 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
Python3实现二叉树的最大深度
Sep 30 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
Feb 21 Python
python实现用户名密码校验
Mar 18 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
python使用自定义钉钉机器人的示例代码
Jun 24 Python
django rest framework 过滤时间操作
Jul 12 Python
Python变量及数据类型用法原理汇总
Aug 06 Python
scrapy redis配置文件setting参数详解
Nov 18 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
PHP 和 XML: 使用expat函数(三)
2006/10/09 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
PHP _construct()函数讲解
2019/02/03 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python中的ConfigParser模块使用详解
2015/05/04 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
美工的岗位职责
2013/11/14 职场文书
抵押贷款承诺书
2014/05/30 职场文书
车辆年审委托书范本
2014/09/18 职场文书
支行行长岗位职责
2015/02/15 职场文书
开学典礼校长致辞
2015/07/29 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python