发工资啦!教你用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的装饰器的运用
May 05 Python
Python 多线程的实例详解
Sep 07 Python
Python字符串和字典相关操作的实例详解
Sep 23 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
使用Eclipse如何开发python脚本
Apr 11 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
Python基于WordCloud制作词云图
Nov 29 Python
python ftplib模块使用代码实例
Dec 31 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 文件缓存的性能测试
2010/04/25 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
分享3个php获取日历的函数
2015/09/25 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
接收键盘指令的脚本
2006/06/26 Javascript
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
详解Python中类的定义与使用
2017/04/11 Python
python3设计模式之简单工厂模式
2017/10/17 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
茶叶生产计划书
2014/01/10 职场文书
大学军训感言200字
2014/02/26 职场文书
租房协议书怎么写
2014/04/10 职场文书
保护动物的标语
2014/06/11 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书