前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python进阶-生成电子邮件

Python进阶-生成电子邮件

作者头像
小团子
发布2019-07-18 15:27:23
1.4K0
发布2019-07-18 15:27:23
举报
文章被收录于专栏:数据云团数据云团

Python 的 email 包处理并管理整个电子邮件消息的 MIME 部分,使用 email 包和 smtplib 包。email 包有多个组件,分别用来解析和生成电子邮件。

代码语言:javascript
复制
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from smtplib import SMTP

# 发送一条多部分消息
def make_mpa_msg():
  email = MIMEMultipart('alternative')
  text = MIMEText("Hello 数据云团!\r\n", 'plain')
  email.attach(text)
  html = MIMEText('<html><body><h4>数据云团</h4></body></html>', 'html')
  email.attach(html)
  return email

# 发送一条电子邮件消息,含有一张图片
def make_img_msg(fn):
  f = open(fn, "r")
  data = f.read()
  f.close()
  email = MIMEImage(data, name=fn)
  email.add_header("Content-Disposition", "attachment; filename='%s'" % fn)
  return email

def sendMsg(fr, to, msg):
  s = SMTP('localhost')
  errs = s.sendmail(fr, to, msg)
  s.quit()

if __name__ == "__main__":
  print("发送一条多部分消息...")
  msg = make_mpa_msg()
  # 发送者
  msg["From"] = SENDER
  # 接收者
  msg['To'] = ', '.join(RECIPS)
  # 邮件标题
  msg["Subject"] = '多内容发送'
  sendMsg(SENDER, RECIPS, msg.as_string())
  
  # 发送一条电子邮件消息,含有一张图片
  print("发送图片...")
  msg = make_img_msg(SOME_IMG_FILE)
  # 发送者
  msg["From"] = SENDER
  # 接收者
  msg['To'] = ', '.join(RECIPS)
  # 邮件标题
  msg["Subject"] = '图片发送'
  sendMsg(SENDER, RECIPS, msg.as_string())

多部分选择消息通常包含两部分,一是以纯文本表示的邮件消息正文,以及等价的 HTML 格式。由邮件客户端来决定显示哪一部分。

为了创建这种类型的消息,需要使用 email.mime.multipart.MIMEMultipart 类,并传递 alternative 作为唯一的参数来实例化这个类。如果不传递这个参数,则前面的纯文本和 HTML 会分别作为消息中的附件,这种情况下,有些邮件系统会同时显示这两部分的内容。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档