Python 发送带附件的图文格式报表脚本(smtplib)

简介: coding: utf-8import smtplibfrom email.mime.multipart import MIMEMultipart #导入MIMEMultipart类from email.

coding: utf-8

import smtplib
from email.mime.multipart import MIMEMultipart #导入MIMEMultipart类
from email.mime.text import MIMEText #导入MIMEText类
from email.mime.image import MIMEImage #导入MIMEImage类
HOST = "smtp.gmail.com" #定义smtp主机
SUBJECT = u"官网业务服务质量周报" #定义邮件主题
TO = "testmail@qq.com" #定义邮件接收人
FROM = "mymail@gmail.com" #定义邮件发件人

def addimg(src,imgid): #添加图片函数,参数1:图片路径,参数2:图片id
fp = open(src, 'rb') #打开文件
msgImage = MIMEImage(fp.read()) #创建MIMEImage对象,读取图片内容作为参数
fp.close() #关闭文件
msgImage.add_header('Content-ID', imgid) #指定图片文件的Content-ID,<img>
#标签src用到
return msgImage #返回msgImage对象

msg = MIMEMultipart('related') #创建MIMEMultipart对象,采用related定义内嵌资源
#的邮件体

创建一个MIMEText对象,HTML元素包括文字与图片<img>

msgtext = MIMEText("<font color=red>官网业务周平均延时图表:
<img src="cid:weekly" border="1">
详细内容见附件。</font>","html","utf-8")
msg.attach(msgtext) #MIMEMultipart对象附加MIMEText的内容
msg.attach(addimg("img/weekly.png","weekly")) #使用MIMEMultipart对象附加
# MIMEImage的内容

创建一个MIMEText对象,附加week_report.xlsx文档

attach = MIMEText(open("doc/week_report.xlsx", "rb").read(), "base64", "utf-8")
attach["Content-Type"] = "application/octet-stream" #指定文件格式类型

指定Content-Disposition值为attachment则出现下载保存对话框,保存的默认文件名使用

filename指定

由于qqmail使用gb18030页面编码,为保证中文文件名不出现乱码,对文件名进行编码转换

attach["Content-Disposition"] = "attachment; filename="业务服务质量周报(12周).xlsx"".decode("utf-8").encode("gb18030")

msg.attach(attach) #MIMEMultipart对象附加MIMEText附件内容
msg['Subject'] = SUBJECT #邮件主题
msg['From']=FROM #邮件发件人,邮件头部可见
msg['To']=TO #邮件收件人,邮件头部可见
try:
server = smtplib.SMTP() #创建一个SMTP()对象
server.connect(HOST,"25") #通过connect方法连接smtp主机
server.starttls() #启动安全传输模式
server.login("mymail@gmail.com","mypassword") #邮箱账号登录校验
server.sendmail(FROM, TO, msg.as_string()) #邮件发送
server.quit() #断开smtp连接
print "邮件发送成功!"
except Exception, e:
print "失败:"+str(e)

目录
相关文章
|
5天前
|
Python
Python 脚本高级编程:从基础到实践
本文介绍了Python脚本的高级概念与示例,涵盖函数的灵活应用、异常处理技巧、装饰器的使用方法、上下文管理器的实现以及并发与并行编程技术,展示了Python在自动化任务和数据操作中的强大功能。包括复杂函数参数处理、自定义装饰器、上下文管理器及多线程执行示例。
31 5
|
8天前
|
安全 Python
Python脚本实现IP按段分类
【10月更文挑战第04天】
16 7
|
12天前
|
机器学习/深度学习 人工智能 运维
自动化运维的魔法:如何利用Python脚本提升工作效率
【9月更文挑战第29天】在数字时代的浪潮中,IT运维人员面临着前所未有的挑战和机遇。本文将通过深入浅出的方式,介绍自动化运维的基本概念、核心价值以及使用Python脚本实现自动化任务的方法。我们将从实际案例出发,探讨如何利用Python简化日常的系统管理任务,提高运维效率,并展望自动化运维的未来趋势。无论你是初学者还是有经验的运维专家,这篇文章都将为你开启一扇通往高效工作方式的大门。
24 2
|
16天前
|
Web App开发 存储 安全
Python编写脚本,打开浏览器输入网址,自动化登陆网站
Python编写脚本,打开浏览器输入网址,自动化登陆网站
20 4
|
16天前
|
Python Windows
python之windows脚本启动bat
python之windows脚本启动bat
|
15天前
|
Python
7-21|Python加载plist格式文件
7-21|Python加载plist格式文件
|
15天前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
Python
Python 技术篇-按任意格式灵活获取日期、时间、年月日、时分秒。日期格式化。
Python 技术篇-按任意格式灵活获取日期、时间、年月日、时分秒。日期格式化。
716 0
|
1天前
|
数据采集 数据挖掘 数据处理
探索Python编程:从基础到进阶的旅程
在编程世界中,Python因其易学性和强大功能而受到许多开发者的青睐。本文将通过一系列生动的例子和实用的技巧,带领初学者理解Python的基础概念,并逐步深入到更复杂的编程任务。我们将一起探索如何通过Python解决实际问题,同时提升编程技能和逻辑思维能力。无论你是编程新手还是希望提高现有技能的开发者,这篇文章都将为你提供宝贵的学习资源和灵感。
|
1天前
|
iOS开发 MacOS Python
Python编程小案例—利用flask查询本机IP归属并输出网页图片
Python编程小案例—利用flask查询本机IP归属并输出网页图片