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)

相关推荐