好开心啊,在旁边大神的帮助下,终于实现了发工资的python脚本,之前用shell写的老出错,刚才测试,发80个人工资详情,妥妥的,代码如下:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.header import Header
#from handle_data_for_salary import main
#import handle_data_for_salary
import smtplib
import xlrd
import xdrlib,sys
def open_excel(file='test1.xls'):
try:
data = xlrd.open_workbook(file)
return data
except Exception as e:
print(str(e))
def excel_table_byname(file='test1.xls',colnameindex=0,by_name='Sheet1'):
data = open_excel(file)
table = data.sheet_by_name(by_name)
nrows = table.nrows #行数
colnames = table.row_values(colnameindex) #某一行数据
list = []
for rownum in range(2,nrows):
row = table.row_values(rownum)
if row:
app = {}
for i in range(len(colnames)):
app[colnames[i]] = row[i]
list.append(app)
return list def get_value():
tables = excel_table_byname()
for row in tables:
global mail
mail = row["邮箱地址"]
global name
name = row["姓名"]
global context
authInfo = {}
authInfo['server'] = 'smtp.163.com'
authInfo['user'] = 'footprints19940807@163.com'
authInfo['password'] = '邮箱密码'
fromAdd = 'footprints19940807@163.com'
subject = 'Email Subject'
context = str(row)
toAdd = [mail, ]
sendEmail(authInfo, fromAdd, toAdd, subject, context) def sendEmail(authInfo, fromAdd, toAdd, subject, plainText): strFrom = fromAdd
strTo = '; '.join(toAdd) server = authInfo.get('server')
smtpPort = 25
sslPort = 465
user = authInfo.get('user')
passwd = authInfo.get('password') if not (server and user and passwd) :
print('incomplete login info, exit now')
return # 设定root信息
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = subject
msgRoot['From'] = '%s<%s>' % (Header('工资详情', 'utf-8'), strFrom)
msgRoot['To'] = strTo # 邮件正文内容
msgText = MIMEText(plainText, 'plain', 'utf-8')
msgRoot.attach(msgText) msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)
try:
#发送邮件
smtp = smtplib.SMTP()
smtp.connect(server, smtpPort)
#ssl加密方式,通信过程加密,邮件数据安全
# smtp = smtplib.SMTP_SSL()
# smtp.connect(server, sslPort) #设定调试级别,依情况而定
# smtp.set_debuglevel(1)
smtp.login(user, passwd)
smtp.sendmail(strFrom, toAdd, msgRoot.as_string())
smtp.quit()
print("邮件发送给%s成功!"%(name))
except Exception as e:
print("失败:" + str(e)) if __name__ == '__main__' :
get_value()

注意:python环境为3.5,实验环境在windows,使用工具为pycharm,需要用到的模块:pip3 install xlrd,其中的工资表,如下图截图部分所示:后面还有很多列,看自己的需求加不,反正都是一列一列的数据

实验结果如下:

现在只是实现了需求,发的邮件多了估计有问题,还有邮件的格式太丑了,等下回家再改改,加油加油

python实现发工资脚本的更多相关文章

  1. 【Python系列】Python自动发邮件脚本-html邮件内容

    缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月, ...

  2. 【Python系列】Python自动发邮件脚本

    缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月, ...

  3. 现在都是python 单独开发框架 执行脚本,处理结果,发报告之类的

    现在都是python 单独开发框架 执行脚本,处理结果,发报告之类的

  4. python3发微信脚本

    企业微信发微信脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- #GuoYabin import requests,json,sys,imp imp.r ...

  5. SQL Server定时自动抓取耗时SQL并归档数据发邮件脚本分享

    SQL Server定时自动抓取耗时SQL并归档数据发邮件脚本分享 第一步建库和建表 USE [master] GO CREATE DATABASE [MonitorElapsedHighSQL] G ...

  6. python 暴力破解密码脚本

    python 暴力破解密码脚本 以下,仅为个人测试代码,环境也是测试环境,暴力破解原理都是一样的, 假设要暴力破解登陆网站www.a.com 用户 testUser的密码, 首先,该网站登陆的验证要支 ...

  7. HDOJ2021发工资咯:)

    发工资咯:) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. HDOJ 2021 发工资咯:)(利用了一种取余的思想)

    Problem Description 作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵 但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处 ...

  9. 一个好用的Python备份mysql的脚本

    前几天打算用Python写一个mysql脚本,上Google看了下老外写的,写的挺好的,原地址在http://tecadmin.net/python-script-for-mysql-database ...

随机推荐

  1. DLL入门浅析(4)——从DLL中导出类

    转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90663.html 前面介绍了怎么从DLL中导出函数和变量,实际上导出类的方法也是大同小 ...

  2. H1B工作签证紧俏 “中签率”低对中国留学生影响大-中新网

    H1B工作签证紧俏 "中签率"低对中国留学生影响大-中新网 H1B工作签证紧俏 "中签率"低对中国留学生影响大

  3. HBase技术介绍

    HBase简介 HBase - Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. HB ...

  4. wxPython跨线程调用

    版权所有,转载请注明出处:http://guangboo.org/2013/08/23/wxpython-non-gui-thread-call-gui-method 之前有介绍了<wxPyth ...

  5. 机器学习实战__KNN1

    KNN的算法工作原理: 存在一个训练样本集合,样本集中每个数据都有确定的标签(分类),即我们知道样本集中每一数据与所属分类的对应关系.输人没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征 ...

  6. (Relax 水题1.2)POJ 1032 Parliament(将n分解成若干个互不相等的整数的和,并且是这些整数的乘积最大)

    题意:给出一个数n,将其拆分为若干个互不相等的数字的和,要求这些数字的乘积最大. 分析:我们可以发现任何一个数字,只要能拆分成两个大于1的数字之和,那么这两个数字的乘积一定大于等于原数.也就是说,对于 ...

  7. Linux下几个常用的快捷键,真的很实用

    1. [tab] 键 在linux所有的shell中,[tab]是最常用的也是linux的bash  shell中最棒的功能:它具有命令补全和档案补全的功能.如果不使用[tab]键,那就别说自己懂li ...

  8. 帧动画 AnimationDrawable

    Drawable Animation(Frame Animation):帧动画,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果. 首先,在res/drawable中定义动画 < ...

  9. git变基、冲突解决

    参考git rebase 版本..变基 git冲突解决先fetch,pull,如果文件冲突,手动处理冲突文件,然后再fetch,pull,发现拉不下来,这时需要将文件改为已合并,然后提交文件 具体操作 ...

  10. Regex.Escape

    C# 字符串变量str 的值为"a\nb"如果直接输出显示的话,就成了:ab需要输出显示为:a\nb问,怎么办?千万别告诉我定义: str=@"a\nb",因为 ...