发工资啦!教你用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的垃圾回收机制深入分析
Jul 16 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
Windows下PyCharm安装图文教程
Aug 27 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
Jan 09 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
python爬取招聘要求等信息实例
Nov 20 Python
pyqt5实现井字棋的示例代码
Dec 07 Python
Django程序的优化技巧
Apr 29 Python
Python first-order-model实现让照片动起来
Jun 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
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
JS分页效果示例
2013/10/11 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
Python格式化压缩后的JS文件的方法
2015/03/05 Python
Python中的下划线详解
2015/06/24 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
详解python itertools功能
2020/02/07 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
波兰在线体育用品商店:Hop-Sport.pl
2019/07/23 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
酒店保安员岗位职责
2014/01/31 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书