Python自动发图片邮件
但是什么都架不住领导的需求,领导说自己不爱看附件,就想正文里看到数据,怎么办呢?
第一反应感觉更好了,毕竟就不用弄Excel表了,于是就开干了
1、 数据库连接取数
import pandas as pdimport pymysqlconfig = { 'host':'localhost', 'port':33061, 'user':'root', 'password':'root' }db = pymysql.connect(**config)sql=('select * from per_info.T_SCORE')data=pd.read_sql(sql,db) data
结果:
数据可以去sql疑难杂症——列转行pviot这里拿
2、 数据模板
假设领导是个教导主任,要求每天看同学们考试成绩,要求分班级,分科目查看平均值以便对l任课老师进行奖惩,代码如下:
data=pd.pivot_table(data,index=['SUBJECT'],columns=['CLASS_ID'],values=['SCORE'],aggfunc=(np.mean))data
结果:
3、 邮件发送
代码如下:
# -*- coding: utf-8 -*-from exchangelib import Account,Credentials,Configuration,DELEGATE,HTMLBody,Message,NTLMfrom exchangelib.protocol import BaseProtocol, NoVerifyHTTPAdapterimport time#此句用来消除ssl证书错误,exchange使用自签证书需加上BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdaptercred = Credentials(r'user', 'password') #登录信息config = Configuration(server='mail.yyyy.com', credentials=cred, auth_type=NTLM) #邮箱服务器信息a = Account( primary_smtp_address='xxx@yyyy.com', config=config, autodiscover=False, access_type=DELEGATE ) #账户设置#发送邮箱函数 def send_mail(Subject,msg,To,Cc): m = Message( account=a, #账户设置 folder=a.sent, subject=Subject, #主题 body=HTMLBody(msg), #邮件内容 to_recipients=To, #收件人 cc_recipients=Cc #抄送人 ) m.send_and_save()name = '月考成绩'To = ['xxxx@yy.com']Cc = ['xxxx@yyy.com']subject = name+time.strftime('%Y%m%d')msg = '''<h1>高三年级考试成绩</h1>'''+z2.to_html()send_mail(subject,msg,To,Cc)
效果:
但是领导不满意,说想看图,一目了然那种。。怎么办呢。。加!
代码:
import matplotlib.pyplot as pltfrom io import BytesIOimport base64buffer = BytesIO()plt.rcParams['font.sans-serif']=['SimHei'] plt.ylim(60,120)plt.title('科目平均成绩')plt.ylabel('分数')plt.xlabel('科目')for i in data.columns: plt.plot(data[i],label=i) plt.legend() plt.savefig(buffer) plot_data = buffer.getvalue()imb = base64.b64encode(plot_data) ims = imb.decode() imd = 'data:image/png;base64,'+ims iris_im = '''<h1>高三年级考试成绩图像</h1> ''' + '''<img src='%s'>''' % imdroot =iris_im #将多个 html 格式的字符串连接起来msg = '''<h1>高三年级考试成绩</h1>'''+z2.to_html()+rootsend_mail(subject,msg,To,Cc)
效果:
题外话一班的英语好厉害。。。。
喜欢我就长按下面这个萌萌的二维码关注我吧~
赞 (0)