专栏首页sktjpython 发送邮件 Html内容嵌入图片 带附件

python 发送邮件 Html内容嵌入图片 带附件

from email.header import Header from email.mime.text import MIMEText import smtplib from email.utils import parseaddr, formataddr from email import encoders from email.mime.base import MIMEBase from email.mime.multipart import MIMEMultipart

def send_email(from_addr,password,to_addr,outfile,title,content,smtp_server="mail.wangsu.com"): msg = MIMEMultipart() msg['From'] = _format_addr(from_addr) msg.add_header('To', to_addr) subject = (title) msg['Subject'] = Header(subject, 'utf-8')

hello = (""" HI ALL: 下表为{} """.format(content)) msg.attach(MIMEText(('<html><body>{}' + '<p><img src="cid:0"></p>' + '</body></html>').format(hello), 'html', 'utf-8'))

att1 = MIMEText(open(outfile, 'rb').read(), 'base64', 'utf-8') att1["Content-Type"] = 'application/octet-stream'

这里的filename可以任意写,写什么名字,邮件中显示什么名字

filename = os.path.basename(outfile) att1["Content-Type"] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' encoded_name = Header(filename).encode() att1['Content-Disposition'] = 'attachment;filename="{}"'.format(encoded_name) msg.attach(att1)

添加附件就是加上一个MIMEBase,从本地读取一个图片:

with open('jietu.png', 'rb') as f: # 设置附件的MIME和文件名,这里是png类型: mime = MIMEBase('image', 'png', filename='jietu.png') # 加上必要的头信息: mime.add_header('Content-Disposition', 'attachment', filename='jietu.png') mime.add_header('Content-ID', '<0>') mime.add_header('X-Attachment-Id', '0') # 把附件的内容读进来: mime.set_payload(f.read()) # 用Base64编码: encoders.encode_base64(mime) # 添加到MIMEMultipart: msg.attach(mime)

server = smtplib.SMTP(smtp_server, 25) server.login(from_addr, password) server.sendmail(from_addr, to_addr.split(","), msg.as_string()) server.quit()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • flask 自定义表单验证器(flask 19)

    from flask_wtf import FlaskForm from wtforms import StringField, PasswordField,...

    用户5760343
  • python 生成flask结构 常用

    config=""" import os basedir = os.path.abspath(os.path.dirname(file)) class C...

    用户5760343
  • python pyqt5 QSplitter

    import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.Qt...

    用户5760343
  • 使用 Mobilenet 和 Keras 来做迁移学习

    本文以notebook的实例的形式讲解。首先用Mobilenet分类狗的图片,然后演示一张不能正确分类的蓝雀图片,然后用迁移学习和Mobilenet重新训练,使...

    AI研习社
  • 使用Keras预训练好的模型进行目标类别预测详解

    最近开始学习深度学习相关的内容,各种书籍、教程下来到目前也有了一些基本的理解。参考Keras的官方文档自己做一个使用application的小例子,能够对图片进...

    砸漏
  • 老版本IE下内容为空时td不显示边框的解决办法

    在较低版本的IE浏览器中,td 内容为空时,就不会显示边框,可以通过下面两种方法解决:

    德顺
  • 给XFN链接关系加上“nofollow”选项

    今天无意间查询了一下友情链接,发现了俺的反链有部分被加上了“nofollow”属性,查了下资料: ....它的出现为网站管理员提供了一种方式,即告诉搜索引擎"不...

    张戈
  • Apache Flink 1.6 Documentation: Jobs and Scheduling

    Flink中的执行资源是通过任务执行槽来确定的。每个TaskManager有一个或者多个任务执行槽,每个可以运行一个并行任务的流水线。每个流水线包含多个连续的任...

    黑光技术
  • sublime txt 3 自定义设置

    平时用的最多文本工具就是sublime了,当前版本3126。 风格、编码、字符大小、换行、是否使用空格代替tab等都可以在此设置 我自己的设置如下:

    大数据工程师-公子
  • 太赞了,这个神器竟然能分分钟将多个 kubeconfig 合并成一个!

    相信很多人都会经常部署不同的 Kubernetes 集群,也会经常删除不再使用的 Kubernetes 集群,如果要在本地通过 kubectl 客户端与集群进行...

    米开朗基杨

扫码关注云+社区

领取腾讯云代金券