python发送邮件(html)例子
python2和python3都可以执行
#!/usr/bin/python3 import pymysql import smtplib import datetime import time from email.mime.text import MIMEText mail_to = "mytest@123.com,mytest@163.com" mail_host = "mail.123.com" mail_user = "admin@123.com" mail_pass = "123456" mail_postfix = "123.com" now_time = datetime.datetime.now() yes_time = now_time + datetime.timedelta(days=-1) sqltext = "select id,user,host,db,time,replace(replace(info,'\r\n',''),'\t','') as sqltext,create_time from tb_run_long_sql where time>0 and create_time> " + "'" + yes_time.strftime('%Y-%m-%d') + "'" mysql_server="192.168.1.113" user_name="root" password= "123456" db_name="db_admin" def query_indb() : # 打开数据库连接 db = pymysql.connect(mysql_server,user_name, password, db_name) ##print(sqltext) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() result = "" title = '' try: cursor.execute(sqltext) results = cursor.fetchall() result = result + "" + str(len(results)) + "\n\n" record_cnt = len(results) title = 'xx实例慢查询' header = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>' th = "<body text='#000000'><center><font size=5 color='#dd0000'><b>" + "慢查询数:" + str(len(results)) + "</b></font></center>" \ "<br/><table style=' font-size: 14px;' border='1' cellspacing='0' cellpadding='1' bordercolor='#000000' width='20%' align='center' ></table>" \ "<br/><table bgcolor='#B0E0E6' style=' font-size: 14px;'border='1' cellspacing='0' cellpadding='0' bordercolor='#000000' width='95%' align='center' >" \ "<tr bgcolor='#F79646' align='left' >" \ "<th>id</th>" \ "<th style='width:90px'>数据库用户</th>" \ "<th>执行机器</th>" \ "<th>数据库</th>" \ "<th style='width:50px'>执行时长(秒)</th>" \ "<th style=width:60px>SQL</th>" \ "<th style='width:50px'>采集时间</th>" \ "</tr>" tr = "" for row in results: td = '' td = td + "<td>" + str(row[0]) + "</td>" td = td + "<td>" + str(row[1]) + "</td>" td = td + "<td>" + str(row[2]) + "</td>" td = td + "<td>" + str(row[3]) + "</td>" td = td + "<td>" + str(row[4]) + "</td>" td = td + "<td style=word-wrap:break-word;word-break:break-all;>" + str(row[5]) + "</td>" td = td + "<td>" + str(row[6]) + "</td>" tr = tr + "<tr>" + td + "</tr>" ##tr = tr.encode('utf-8') body = str(tr) tail = '</table></body></html>' mail = header + th + body + tail ##print(mail) return title, mail,record_cnt except Exception as e: print(e) db.close() return result def send_email(mail_to,sub,content) : me="admin@123.com" msg = MIMEText(content,_subtype="html",_charset="gb2312") msg['Subject'] = sub msg['From'] = me msg['To'] = mail_to try : server = smtplib.SMTP() server.connect(mail_host) server.ehlo() server.starttls() server.ehlo() server.set_debuglevel(1) server.login(mail_user,mail_pass) server.sendmail(me,mail_to,msg.as_string()) server.quit() return True except Exception as e : print(str(e)) return False if __name__ == '__main__' : (title, result,record_cnt)=query_indb() print(record_cnt) if (record_cnt > 0): send_email(mail_to, title + '('+str(yes_time.strftime('%Y%m%d'))+')', result)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步