python爬虫实现带附件+html内容以及图片的邮件发送

来源:互联网 发布:马克斯cms手机站 编辑:程序博客网 时间:2024/05/06 03:52
# -*- coding: utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf8')import smtplibimport emailfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.image import MIMEImageHOST = 'smtp.qq.com'SUBJECT = '这是带附件的测试邮件'FROM = '402537199@qq.com'To = '18530897733@163.com'# 定义添加图片的函数# path:图片路径;imgid对应附件id,可根据id嵌入正文def add_img(path,imgid):    data = open(path,'rb')    # 创建MIMEImage对象,读取图片作为imgdata的数据参数    msg_img = MIMEImage(data.read())    # 关闭文件    data.close()    # 指定图片文件的Content-ID    msg_img.add_header('Content-ID',imgid)    return msg_img# 创建要发送的邮件正文及附件# related 使用邮件内嵌资源,可以把附件中的图片等附件嵌入到正文中msg = MIMEMultipart('related')# 创建文本用于发送文本的MIMEText对象# msg_text = MIMEText('详情见附件~')msg_text = MIMEText('<span style="color:red">详情如下:</span><br><img src="cid:zg"','html','utf-8')msg.attach(msg_text)# 添加图片附件# 添加邮件的正文内容msg.attach(add_img(u'cookiesession的执行过程.png','zg'))# xls,doc等文件作为附件添加到邮件中# 创建MIMEText对象,保存xls文件attach = MIMEText(open(u'1.xls','rb').read(),'base64','utf-8')# 指定当前文件格式类型# attach["Content-Type"] = "application/octet-stream"# 配置附件显示的文件名称,当点击下载附件时,默认使用的保存文件的名称# gb18030 :qq邮箱中使用的是gb18030编码,防止出现中文乱码attach['Content-Disposition'] = 'attachment;filename="1.xls"'.decode('utf-8').encode('gb18030')# 把附件添加到msgmsg.attach(attach)# 设置必要请求头信息msg['From'] = FROMmsg['To'] = Tomsg['Subject'] = SUBJECT# 发送邮件smtp_server = smtplib.SMTP()smtp_server.set_debuglevel(1)smtp_server.connect(HOST,'25')smtp_server.starttls()smtp_server.login(FROM,'mibhdrhwayxfbife')smtp_server.sendmail(FROM,To,msg.as_string())smtp_server.quit()