【详解】【记录】Python写Excel预约信息表并发送邮件
来源:互联网 发布:论坛发帖推广软件 编辑:程序博客网 时间:2024/04/30 04:09
类似于本例我们写过两个脚本了,但还是遇到了一些问题。
本例是比较基础且标准的一个版本。
实现的操作是:从数据库中取出数据,写入Excel表,并发送邮件。相当简单的一个Excel表。
【发送给单人版】
#!/usr/bin/python# -*- coding: UTF-8 -*-__author__ = "$Author: wangxin.xie$"__version__ = "$Revision: 1.0 $"__date__ = "$Date: 2015-12-11 10:36$"################################################################功能: 鱼丸预约用户信息###############################################################import osimport sysimport datetimeimport xlrdimport xlwtfrom xlutils.copy import copyfrom myyutil.DBUtil import DBUtilimport smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom myyutil.ScriptExecuteUtil import ScriptExecuteUtilreload(sys)sys.setdefaultencoding('utf8')#######################全局变量####################################ngTradeDBUtil = DBUtil('netgame_trade')#execute = ScriptExecuteUtil(handleDate = handleDate)#fileDir = '/usr/local/bin/myy_script/report/data/'#fileName = fileDir + execute._reportNamefileDir = 'D://'fileName = fileDir+'yuwanyuyue.xls'tempFileName = fileDir+'yuwan_temp.xls'style1 = xlwt.XFStyle()font1 = xlwt.Font()font1.height = 220font1.name = 'SimSun'style1.font = font1##################################################################def createTemplateExcel(): '''创建Excel文件模板''' wb = xlwt.Workbook(encoding = "UTF-8", style_compression = True) sht0 = wb.add_sheet("sheet1", cell_overwrite_ok = True) sht0.col(0).width=5000 sht0.col(1).width=6000 sht0.col(2).width=6000 sht0.write(0, 0, '手机号码', style1) sht0.write(0, 1, '预约时间', style1) sht0.write(0, 2, 'IP', style1) wb.save(tempFileName)def genYuwanAccountAppointment(): sql = "SELECT MOBILE,CREATED_DATE,IP FROM netgame_trade.YUWAN_ACCOUNT_APPOINTMENT WHERE CREATED_DATE < '2015-12-12'" rs = ngTradeDBUtil.queryList(sql, ()) if not rs: return None print rs return rsdef writeInfo0(sht, rs, length): '''写入具体数据''' for i in range(length): sht.write(i+1, 0, str(rs[i][0]), style1) sht.write(i+1, 1, str(rs[i][1]), style1) sht.write(i+1, 2, rs[i][2], style1)def writeExcel(): '''写报表''' createTemplateExcel() readFile = tempFileName rb = xlrd.open_workbook(readFile, on_demand = True, formatting_info = True) wb = copy(rb) rs=genYuwanAccountAppointment() length=len(rs) sheet0 = wb.get_sheet(0) writeInfo0(sheet0, rs, length) wb.save(fileName)def sendEmail(): # 创建一个带附件的实例 msg = MIMEMultipart() # 构造附件1 att1 = MIMEText(open(fileDir+'yuwanyuyue.xls', 'rb').read(), 'base64', 'gb2312') att1["Content-Type"] = 'application/octet-stream' # fileName以数据加日期命名 fileName="鱼丸预约信息".decode('utf-8').encode('gbk')+".csv" att1["Content-Disposition"] = 'attachment; filename=%s'%fileName msg.attach(att1) # 写入邮件正文 text=" Hi,本邮件为自动信,若有任何问题请与我联系。谢谢!" # 邮件正文乱码,所以在这里指定编码 part1 = MIMEText(text, 'plain', _charset='utf-8') msg.attach(part1) # 加邮件 msg['to'] = 'wan.zhang@xxx.com' msg['from'] = 'datacentre@xxx.com' msg['subject'] = '预约信息'.decode('utf-8') # 发送邮件 try: server = smtplib.SMTP() # 数据中心测试时 server.connect('mail.xxx.com') # 用户名,密码 server.login('datacentre@xxx.com', 'pwd') server.sendmail(msg['from'], msg['to'], msg.as_string()) server.quit() print '发送成功'.decode("utf-8") except Exception, e: print str(e)def main(): print "===%s start===%s"%(sys.argv[0], datetime.datetime.strftime(datetime.datetime.now(), "%Y-%m-%d %H:%M:%S")) writeExcel() sendEmail() print "===%s end===%s"%(sys.argv[0], datetime.datetime.strftime(datetime.datetime.now(), "%Y-%m-%d %H:%M:%S"))if __name__ == '__main__': try: main() #createTemplateExcel() #execute.start(main) #execute.addMailTask() #execute.pushStart(fileDir) #execute.end() finally: if ngTradeDBUtil: ngTradeDBUtil.close()
【发送邮件给多人版】
主要是发送邮件的函数变化了
def sendEmail(): # 创建一个带附件的实例 msg = MIMEMultipart() # 构造附件1 att1 = MIMEText(open(fileDir+'yuwanyuyue.xls', 'rb').read(), 'base64', 'gb2312') att1["Content-Type"] = 'application/octet-stream' # fileName以数据加日期命名 fileName="鱼丸预约信息".decode('utf-8').encode('gbk')+".csv" att1["Content-Disposition"] = 'attachment; filename=%s'%fileName msg.attach(att1) # 写入邮件正文 text=" Hi,本邮件为测试自动信,若有任何问题请与我联系。谢谢!" # 邮件正文乱码,所以在这里指定编码 part1 = MIMEText(text, 'plain', _charset='utf-8') msg.attach(part1) # 加邮件 strTo = ['wan.zhang@xxx.com', 'wangxin.xie@xxx.com'] msg['to'] = ','.join(strTo) msg['from'] = 'datacentre@xxx.com' msg['subject'] = '用户预约信息'.decode('utf-8') # 发送邮件 try: server = smtplib.SMTP() # 数据中心测试时 server.connect('mail.xxx.com') # 用户名,密码 server.login('datacentre@xxx.com', 'pwd') server.sendmail(msg['from'], strTo, msg.as_string()) server.quit() print '发送成功'.decode("utf-8") except Exception, e: print str(e)不一样的地方就三行代码
strTo = ['wan.zhang@xxx.com', 'wangxin.xie@xxx.com'] msg['to'] = ','.join(strTo)
server.sendmail(msg['from'], strTo, msg.as_string())
0 0
- 【详解】【记录】Python写Excel预约信息表并发送邮件
- python生成每日报表数据(Excel)并邮件发送
- python查询mysql导出结果至Excel并发送邮件
- python实现自动登录qq邮箱,写邮件并发送
- python发送邮件详解
- c#以单据标准格式写EXCEL并发送邮件出去
- python连接oracle,把计算结果存入本地excel并发送带附件邮件
- Python绘制excel表格到邮件正文区并发送脚本实例
- Python爬虫-爬取集思录的金融信息,并写入文件和检测数据变化发送邮件通知
- Python的SMTP发送邮件学习记录
- 【详解】Python建立Map写Excel表
- 【详解】Python带历史数据写Excel表
- python查询数据库并发送邮件
- python 获取错误日志,并发送邮件
- python操作excel 批量发送工资信息
- JAVA 写Excel附件 每天定时发送邮件
- JAVA 写Excel附件 每天定时发送邮件
- 将查询语句导出excel并发送SQLserver 邮件
- 7个免费的移动应用程序测试框架
- video JS实现多视频循环播放
- Android音频系统之AudioFlinger(一)
- Spring实现AOP的4种方式
- Linux负载均衡环境搭建-1 Linux下安装Nginx详细图解教程
- 【详解】【记录】Python写Excel预约信息表并发送邮件
- [译]JavaScript中的属性:定义和赋值的区别
- 理解dropout
- 3种常用系统制作ubuntu U盘安装盘
- Android 权限设置大全
- 似于印象笔记Evernote生活类iOS应用源码
- java导出word(Freemarker)
- 有关java内存泄露
- 黑马程序员---Java基础---双列集合Map(接口)