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

来源:互联网 发布:马哥linux培训视频 编辑:程序博客网 时间:2024/06/05 11:00

简介

有时,我们使用的系统会发送系统运行情况的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 MIMETextfrom email.utils import formatdate, make_msgidfrom smtplib import SMTP, SMTP_SSL# from email import messageif __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()


0 0