python之定制个性化的邮件格式方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/87519959

一 点睛

通过邮件传输简单的文本已经无法满足我们的需求,比如我们时常会定制业务质量报表,在邮件主体中会包含HTML、图像、声音以及附件格式等,MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)作为一种新的扩展邮件格式很好地补充了这一点,更多 MIME知识见http://zh.wikipedia.org/wiki/MIME。下面介绍几个Python中常用的MIME实现类。

二 MIME实现类

  • email.mime.multipart.MIMEMultipart([_subtype[,boundary[, _subparts[,_params]]]]):作用是生成包含多个部分的邮件体的MIME 对象,参数_subtype指定要添加到"Content-type:multipart/subtype"报头 的可选的三种子类型,分别为mixed、related、alternative,默认值为 mixed。定义mixed实现构建一个带附件的邮件体;定义related实现构建内嵌资源的邮件体;定义alternative则实现构建纯文本与超文本共存的邮件体。 

  • email.mime.audio.MIMEAudio(_audiodata[,_subtype[, _encoder[,**_params]]]):创建包含音频数据的邮件体,_audiodata包含原始二进制音频数据的字节字符串。 

  • email.mime.image.MIMEImage(_imagedata[,_subtype[, _encoder[,**_params]]]):创建包含图片数据的邮件体,_imagedata是包含原始图片数据的字节字符串。

  • email.mime.text.MIMEText(_text[,_subtype[,_charset]]):创建 包含文本数据的邮件体,_text是包含消息负载的字符串,_subtype指定文本类型,支持plain(默认值)或html类型的字符串。

三 smtplib及email的分工

我们可以将email.mime理解成smtplib模块邮件内容主体的扩展,从原先默认只支持纯文本格式扩展到HTML,同时支持附件、音频、图像等格式,smtplib只负责邮件的投递即可。

四 实现HTML格式的数据报表邮件

1 代码

# coding: utf-8
import smtplib
from email.mime.text import MIMEText

HOST = "smtp.qq.com"
SUBJECT = u"官网流量数据报表"
TO = "[email protected]"
FROM = "[email protected]"

msg = MIMEText("""
    <table width="800" border="0" cellspacing="0" cellpadding="4">
      <tr>
        <td bgcolor="#CECFAD" height="20" style="font-size:14px">*官网数据  <a href="monitor.domain.com">更多>></a></td>
      </tr>
      <tr>
        <td bgcolor="#EFEBDE" height="100" style="font-size:13px">
        1)日访问量:<font color=red>152433</font>  访问次数:23651 页面浏览量:45123 点击数:545122  数据流量:504Mb
        2)状态码信息
        &nbsp;&nbsp;500:105  404:3264  503:214
        3)访客浏览器信息
        &nbsp;&nbsp;IE:50%  firefox:10% chrome:30% other:10%
        4)页面信息
        &nbsp;&nbsp;/index.php 42153
        &nbsp;&nbsp;/view.php 21451
        &nbsp;&nbsp;/login.php 5112
       </td>
       </tr>
    </table>""", "html", "utf-8")
msg['Subject'] = SUBJECT
msg['From'] = FROM
msg['To'] = TO
try:
    server = smtplib.SMTP()
    server.connect(HOST, "25")
    server.starttls()
    server.login("[email protected]", "QQ电子邮箱授权码")
    server.sendmail(FROM, TO, msg.as_string())
    server.quit()
    print "邮件发送成功!"
except Exception, e:
    print "失败:" + str(e)

2 运行结果

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/87519959