年关降至,学会用Python定制化群发邮件

Python网络爬虫与文本数据分析(视频课)

年关降至,肯定有群发短信发感谢信的需求,今天继续接着昨天的自动化办公教程来一个自动群发邮件。仍然假设是给员工核算工资,发送工资条详情顺带着表达一下公司的感谢。

读取工资条

HR核算每个人的工资

import pandas as pd
df = pd.read_excel('工资条.xlsx')
print(df.to_markdown())
|    |   员工id | 姓名   |   年龄 | 岗位   |   底薪 |   奖金 |   交通补助 |   餐补 | 邮箱              |
|---:|---------:|:-------|-------:|:-------|-------:|-------:|-----------:|-------:|:------------------|
|  0 |        1 | 张三   |     25 | 销售   |   3000 |  10000 |       1000 |   1000 | [email protected] |
|  1 |        2 | 李四   |     30 | 后勤   |   3200 |    500 |        200 |    500 | [email protected]  |
|  2 |        3 | 王五   |     21 | 前台   |   4000 |   1000 |        500 |    200 | [email protected]  |
|  3 |        4 | 赵六   |     34 | 财务   |   5000 |   1000 |        500 |    500 | [email protected] |

计算每个人的工资

df['工资总计'] = df.eval("底薪+奖金+交通补助+餐补")
print(df.to_markdown())
|    |   员工id | 姓名   |   年龄 | 岗位   |   底薪 |   奖金 |   交通补助 |   餐补 | 邮箱              |   工资总计 |
|---:|---------:|:-------|-------:|:-------|-------:|-------:|-----------:|-------:|:------------------|-----------:|
|  0 |        1 | 张三   |     25 | 销售   |   3000 |  10000 |       1000 |   1000 | [email protected] |      15000 |
|  1 |        2 | 李四   |     30 | 后勤   |   3200 |    500 |        200 |    500 | [email protected]  |       4400 |
|  2 |        3 | 王五   |     21 | 前台   |   4000 |   1000 |        500 |    200 | [email protected]  |       5700 |
|  3 |        4 | 赵六   |     34 | 财务   |   5000 |   1000 |        500 |    500 | [email protected] |       7000 |

通知信模板

template = """{name}先生(女士),您好!\n\n\
  这是{date}的工资条信息:\n\n\
     {gangwei}底薪¥{base}\n\
     交通补助¥{transport}\n\
     餐补¥{food}\n\n\
  由于您当月出色的表现,
  公司决定奖励你¥{bonus}\n\
  当月工资总计{salary}\n
  希望{familyname}兄弟(姐妹)继续为了公司加油~\n\n
                     from {company}公司
"""
info = template.format(name='张三',
                       date='2019年12月',
                       gangwei='销售',
                       base=3000,
                       transport=1000,
                       food=1000,
                       bonus=10000,
                       salary=15000,
                       familyname='张',
                       company='杭州XX')
print(info)

运行结果

    张三先生(女士),您好!
      这是2019年12月的工资条信息:
         销售底薪¥3000
         交通补助¥1000
         餐补¥1000
      由于您当月出色的表现,
      公司决定奖励你¥10000
      当月工资总计15000
      希望张兄弟(姐妹)继续为了公司加油~
    
                         from 杭州XX公司

全体职员通知信

for idx, employee in df.iterrows():
    info = template.format(name=employee['姓名'],
                           gangwei=employee['岗位'],
                           base=employee['底薪'],
                           transport=employee['交通补助'],
                           food=employee['餐补'],
                           bonus=employee['奖金'],
                           salary=employee['工资总计'],
                           familyname=employee['姓名'][0],
                           company='杭州XX',
                           date='2019年12月')
    print(info)
    print('===============================================================')

运行结果

    张三先生(女士),您好!
      这是2019年12月的工资条信息:
         销售底薪¥3000
         交通补助¥1000
         餐补¥1000
      由于您当月出色的表现,
      公司决定奖励你¥10000
      当月工资总计15000
      希望张兄弟(姐妹)继续为了公司加油~
    
                         from 杭州XX公司
。。。。。省略。。。。。
    赵六先生(女士),您好!
      这是2019年12月的工资条信息:
         财务底薪¥5000
         交通补助¥500
         餐补¥500
      由于您当月出色的表现,
      公司决定奖励你¥1000
      当月工资总计7000
      希望赵兄弟(姐妹)继续为了公司加油~
    
                         from 杭州XX公司
    ===============================================================

群发邮件

群发邮件前需要先安装好zmail,学一下zmail使用方法

使用zmail群发邮件

!pip3 install zmail
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: zmail in /usr/local/lib/python3.7/site-packages (0.2.7)
import zmail
import pandas as pd
# 邮件的pop设置后的密码
server =zmail.server('你的qq邮箱','POP设置后的密码')
#计算工资
df = pd.read_excel('工资条.xlsx')
df['工资总计'] = df.eval("底薪+奖金+交通补助+餐补")
#群发邮件
for idx, employee in df.iterrows():
    #工资条内容
    info = template.format(name=employee['姓名'],
                           gangwei=employee['岗位'],
                           base=employee['底薪'],
                           transport=employee['交通补助'],
                           food=employee['餐补'],
                           bonus=employee['奖金'],
                           salary=employee['工资总计'],
                           familyname=employee['姓名'][0],
                           company='杭州XX',
                           date='2019年12月')
    #邮件内容
    mailcontent ={'subject':'{} 工资条到了, 注意查收!'.format(employee['姓名']),
                  'content_text': info,
                  'attachments': 'img/感谢有你.png' }
    server.send_mail(employee['邮箱'], mailcontent)
    print('{} 的工资条发送成功!'.format(employee['姓名']))
print('\n'*5)
print('ヽ( ̄▽ ̄)و全部通知完成,下班,回家,过元旦~')

运行结果

    张三 的工资条发送成功!
    李四 的工资条发送成功!
    王五 的工资条发送成功!
    赵六 的工资条发送成功!
    ヽ( ̄▽ ̄)و全部通知完成,下班,回家,过元旦~

运行效果

邮箱POP设置

参考这篇文章  使用zmail群发邮件    设置POP

近期文章

精选课程 | Python数据分析实战(学术)

pandas 1.0最新版本特性抢先看

用python帮你生产指定内容的word文档

Modin:一行代码让pandas加速数十倍

2020年B站跨年晚会弹幕内容分析

综述:文本分析在市场营销研究中的应用

Lazy Prices公司年报内容变动碰上股价偷懒

使用pandas做数据可视化

用statsmodels库做计量分析

YelpDaset: 酒店管理类数据集10+G

NRC词语情绪词典和词语色彩词典

Loughran&McDonald金融文本情感分析库

股评师分析报告文本情感分析预测股价

使用分析师报告中含有的情感信息预测上市公司股价变动

【公开视频课】Python语法快速入门

【公开视频课】Python爬虫快速入门

一行pandas代码生成哑变量

使用Python读取图片中的文本数据

代码不到40行的超燃动态排序图

jupyter notebook代码获取方式,公众号后台回复关键词“20200117” 

你可能感兴趣的:(年关降至,学会用Python定制化群发邮件)