Python网络编程:E-mail服务(九) 发送HTML格式邮件

简介

有时,我们使用的系统会发送系统运行情况的email报告。email的内容可能是格式化的纯文本数据,但是邮件客户端接收到后,可能因为非等宽字体显示的原因,导致客户端显示的样式非常不便于阅读。本文介绍如何编写和发送HTML形式的邮件,来解决这个问题。

E-mail渲染器机制

Email支持纯文本和HTML两种格式。一个纯文本的email渲染器通常以等宽字体对邮件内容进行渲染,但这点并不能得到保证。最重要的是,你对纯文本的邮件内容如何显示无能为力。在很多时候,自动发送的邮件里含有格式化的纯文本监控、异常等信息,在邮件客户端接收后,由于以非等宽字体格式显示,导致原格式化的信息无法正常显示。这时,HTML格式邮件能够帮助我们解决这类问题。

如果你的邮件客户端能够支持HTML格式的文本,这个问题就很容易解决。我们可以把需要格式化的内容通过font标签:<font face="Courier New, Courier, monospace"></font>将相关内容包含在这个标签中,这样客户端就可以使用等宽字体来对内容进行显示。
在Python代码中,你可以简单的进行如下的处理:
text = '<font face="Courier New, Courier, monospace">' + text + '</font>'

HTML邮件实例

下面是一个实际的例子,这里我们使用了HTML的<pre></pre>标签; pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。
'''
Created on Apr 19, 2015

@author: jliu
'''
from email.mime.text import MIMEText
from email.utils import formatdate, make_msgid
from smtplib import SMTP, SMTP_SSL

# from email import message

if __name__ == '__main__':
    message = 'Hi, <br/>' \
              '    This email is auto-generated by the monitor tool. <br/>'\
              '    Thanks <br/>' \
              'Bob Liu<br/>'
    html_start = '<font face="Courier New, Courier, monospace"><pre>'
    html_end = '</pre></font>'
    msg = MIMEText(html_start + message + html_end, _subtype='html', _charset='utf-8')
    msg['To'] = 'jinguang.liu@qq.com'
    msg['From'] = 'infinera@163.com'
    msg['Subject'] = 'monitor report'
    msg['Date'] = formatdate(localtime=1)
    msg['Message-ID'] = make_msgid()
    
    smtp_server = 'smtp.163.com'
    smtp = SMTP(smtp_server)
    smtp.set_debuglevel(1)
    smtp.login('infinera', 'xxxxxxxx')
    smtp.sendmail(msg['From'], msg['To'], msg.as_string())
    smtp.quit()


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值