#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import smtplib
import time
import datetime
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import parseaddr, formataddr
from email.header import Header
# 第三方 SMTP 服务
mail_host="smtp.xxx.com" #设置服务器,可以用自己公司的邮箱服务器。或者163等等
mail_user="whlong@xxx.com" #用户名
mail_pass="whlpassword" #口令
sender = 'whlong@xxx.com'
receivers = 'whlong@jiayougo.com,3756xxxxx@qq.com' # 收件地址,可设置为你的QQ邮箱或者其他邮箱
cc = 'whlong@jiayougo.com,1560xxxxx@qq.com' # 抄送地址,可设置为你的QQ邮箱或者其他邮箱
#邮件正文里使用的格式化日期
c_time=datetime.datetime.now()
c_date=c_time+datetime.timedelta(days=-1)
b_date=c_time+datetime.timedelta(days=-7)
#邮件正文里使用的格式化日期
format_c_date=c_date.strftime('%Y%m%d')
format_b_date=b_date.strftime('%Y%m%d')
#创建一个带附件的实例
message = MIMEMultipart()
message['From'] = Header("wanghailong@jiayougo.com", 'utf-8')
message['To'] = Header("我自己;我的qq邮箱", 'utf-8')
message['Cc'] = Header("我自己;我的qq邮箱", 'utf-8')
subject = '慢日志统计'
message['Subject'] = Header(subject, 'utf-8')
#邮件正文内容
message.attach(MIMEText('附件为生产库的slowlog慢查询统计。请查看并按需改进。谢谢!统计间隔为%d-%d期间。\n(注:此邮件为脚本自动发送,有问题请及时联系!)\n\n选项说明:\n总查询次数 (queries total);\n去重后的sql数量 (unique);\n输出报表的内容排序(sorted by);\n最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数;\nCount:sql的执行次数及占总的slow log数量的百分比;\nTime:执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比;\n95%% of Time:去除最快和最慢的sql, 覆盖率占95%%的sql的执行时间;\nLock Time:等待锁的时间;\n95%% of Lock:95%%的慢sql等待锁时间;\nRows sent:结果行统计数量, 包括平均,最小, 最大数量;\nRows examined:扫描的行数量;\nDatabase:属于哪个数据库;\nUsers:哪个用户,IP,占到所有用户执行的sql百分比;\nQuery abstract:抽象后的sql语句;\nQuery sample:sql语句;\n'%(int(format_b_date),int(format_c_date)), 'plain', 'utf-8'))
path='/data/whlong/slowlog/log_result'
filelist=os.listdir(path)
for files in filelist:
# 构造附件,传送当前目录下的所有文件
att1 = MIMEText(open('/data/whlong/slowlog/log_result/'+files, 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字。这里使用文件的原名。
att1["Content-Disposition"] = 'attachment; filename=%s'%(files)
message.attach(att1)
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers.split(',')+cc.split(','), message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"