`

使用python发送html的邮件

 
阅读更多

实现功能1:查询数据,然后做成报表,再发送这些报表

 

代码:

写道
import smtplib
from datetime import datetime, timedelta
import time
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart

def get_html_msg(send_date):
     head = """<head><meta charset="utf-8">
    <STYLE TYPE="text/css" MEDIA=screen>
    <!--
     table {font-size:20px;border-collapse: collapse;font-family: arial;}
    thead {border: 2px solid #B1CDE3;background: #00ffff;font-size:18px;padding: 10px 10px 10px       10px;color: #4f6b72;font-family: times;}
     th {vertical-align:top;font-size:12px;padding: 5px 5px 5px 5px;color: #4f6b72;font-family: arial;}
     body {font-family: arial;}
    -->
    </STYLE>
    </head>"""

     p = """<p>大家好:<br>截止到 """ + get_cpu_report_date(send_date, format_min) + """,各个设备性     能指标报表如下,请查阅。<br></p>"""

     body = """<body>""" + p + """
     <table border="0" cellpadding="0" cellspacing="0">
     <th>""" + get_cpu_table() +"""</th>
     <th>"""+get_io_table() + """</th>
     <th>"""+get_load_table() + """</th>
     <th>"""+get_memory_table() + """</th>
     <th>"""+get_process_speed_table() + """</th>
     </table>
     </body>"""
     html = """<html>""" + head + body + """</html>"""
     return html

def send_mail(html_msg):
     msg = MIMEMultipart()
     content = MIMEText(html_msg,'html')
     msg.attach(content)
     msg['To'] = ";".join(to_list)
     msg['From'] = from_addr
     msg['Subject'] = subject
     s = smtplib.SMTP('xxxx')
     s.set_debuglevel(0)
     s.sendmail(from_addr, to_list, msg.as_string())
     s.quit()
     print "ok"

if __name__ == "__main__":
     now = datetime.now()
     html = get_html_msg()
     send_mail(html)

 

实现功能2(发送附件):(转载)

 

 #!/usr/bin/env python 
#-*-coding:utf8-*- 

import os, smtplib, mimetypes 
from email.mime.text import MIMEText 
from email.mime.image import MIMEImage 
from email.mime.multipart import MIMEMultipart 

MAIL_LIST = ["username@51cto.com"] 
MAIL_HOST = "smtp.51cto.com"
MAIL_USER = "username"
MAIL_PASS = "password"
MAIL_POSTFIX = "51cto.com"
MAIL_FROM = MAIL_USER + "<"+MAIL_USER + "@" + MAIL_POSTFIX + ">"

def send_mail(subject, content, filename = None): 
    try: 
        message = MIMEMultipart() 
        message.attach(MIMEText(content)) 
        message["Subject"] = subject 
        message["From"] = MAIL_FROM 
        message["To"] = ";".join(MAIL_LIST) 
        if filename != None and os.path.exists(filename): 
            ctype, encoding = mimetypes.guess_type(filename) 
            if ctype is None or encoding is not None: 
                ctype = "application/octet-stream"
            maintype, subtype = ctype.split("/", 1) 
            attachment = MIMEImage((lambda f: (f.read(), f.close()))(open(filename, "rb"))[0], _subtype = subtype) 
            attachment.add_header("Content-Disposition", "attachment", filename = filename) 
            message.attach(attachment) 

        smtp = smtplib.SMTP() 
        smtp.connect(MAIL_HOST) 
        smtp.login(MAIL_USER, MAIL_PASS) 
        smtp.sendmail(MAIL_FROM, MAIL_LIST, message.as_string()) 
        smtp.quit() 

        return True
    except Exception, errmsg: 
        print "Send mail failed to: %s" % errmsg 
        return False

if __name__ == "__main__": 
    if send_mail("测试信", "我的博客欢迎您/", r"G:\attachment.rar"): 
        print "发送成功!"
    else: 
        print "发送失败!"
 1、首先要理解一个常识(RFC)

RFC(The Request for Comments)是一个关于Internet各种标准的文档,定义了很多的网络协议和数据格式,标准的Internet邮件遵从RFC2822(Internet Message Format)等几个文档,其中RFC822中描述了邮件头(mail headers)的格式。具体文档在Python帮助里都可以查到全文。

2、其次要熟悉Python的几个模块

关于邮件的有email,smtplib等,关于编码的有base64,binascii等,发送邮件的方式就是先根据RFC构造好邮件的各个部分,然后登录到smtp服务器sendmail就可以了。

3、下面贴代码

1使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客# -*- coding: cp936 -*-

2使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客

3使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客from email.Header import Header

4使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客from email.MIMEText import MIMEText

5使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客from email.MIMEMultipart import MIMEMultipart

6使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客import smtplib, datetime

7使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客

8使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客#创建一个带附件的实例

9使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客msg = MIMEMultipart()

10使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客

11使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客#构造附件

12使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客att = MIMEText(open('d:\\tc201.rar', 'rb').read(), 'base64', 'gb2312')

13使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客att["Content-Type"] = 'application/octet-stream'

14使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客att["Content-Disposition"] = 'attachment; filename="tc201.rar"'

15使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客msg.attach(att)

16使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客

17使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客#加邮件头

18使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客msg['to'] = 'zhousl@xxx.com'

19使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客msg['from'] = 'zhousl@xxx.com'

20使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客msg['subject'] = Header('冒烟测试结果 (' + str(datetime.date.today()) + ')', \

21使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客                        'gb2312')

22使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客#发送邮件

23使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客server = smtplib.SMTP('smtp.xxx.com')

24使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客server.sendmail(msg['from'], msg['to'], \

25使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客                 msg.as_string())

26使用python发送带附件的邮件(转) - 阿郎 - 阿郎的博客server.close

4、几个值得注意的地方

1)构造附件时注意采用正确的字符集,这个困惑我好久,开始没有用gb2312,发过去的压缩文件就是坏的;

2)上面的代码中没有包括登录smtp服务器的指令,而Internet上面的smtp服务器一般都是要求认证的,可以通过smtp.login方法进行登陆

3)sendmail方法中的参数to可以是包含多个地址的元组,这样可以发送邮件给多个人了

4)Python2.4以前的版本是不支持gb2312字符集的,要下载安装Python2.4才能跑上面的代码,当然2.4.1肯定会更好一点

 

分享到:
评论

相关推荐

    Python发送带图片邮件

    要使用Python发送带有图片的邮件,可以按照以下步骤进行: 导入所需的模块:首先,导入smtplib和email相关的模块,用于发送邮件。 创建邮件对象:使用email模块创建一个邮件对象。设置邮件的发件人、收件人、主题...

    Python实现邮箱自动化处理

    2 利用Python发送邮件 2.1 发送一封简单的电子邮件 2.2 发送含HTML样式的电子邮件 2.3 发送带附件的电子邮件 2.4 以邮件的内容发送,而不是作为附件形式发送 2.5 群发邮件 2.6 定时发送邮件 2.7 发送CSV文件...

    如何使用Python发送HTML格式的邮件

    这篇文章主要介绍了如何使用Python发送HTML格式的邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 发送html格式的和普通文本格式差不多,只是MIMEText...

    python 实现查询mysql数据并发送邮件

    python 实现查询mysql数据并发送邮件

    Python发送邮件测试报告操作实例详解

    本文实例讲述了Python发送邮件测试报告操作。分享给大家供大家参考,具体如下: 发邮件需要用到python两个模块,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email...

    Python-Python实现自动发邮件支持HTML富文本

    Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件

    python实现自动发送邮件

    要通过Python实现自动发送邮件,可以按照以下描述进行操作: 导入相关模块:首先,导入Python中用于发送邮件的相关模块,如smtplib和email。 配置SMTP服务器:确定要使用的SMTP服务器,并设置相应的配置参数,如...

    python发邮件程序

    python发邮件程序,发送方法:./mail.py 收件人 主题 html内容 图片文件 附件文件'

    详解Python发送email的三种方式

    Python发送email的三种方式,分别为使用登录邮件服务器、使用smtp服务、调用sendmail命令来发送三种方法 Python发送email比较简单,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以...

    详解Python发送邮件实例

    今天,就来好好学习一下使用Python发送邮件吧。 SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,...

    python3使用SMTP发送HTML格式邮件

    主要为大家详细介绍了python3使用SMTP发送HTML格式的邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Python2.4.3实现在Linux环境发送带附件的邮件,支持html格式

    Python2.4.3实现在Linux环境发送带附件的邮件,支持html格式

    邮件客户端的html格式邮件解析规则系列教程(一)

    各ISPs及邮件客户端的Html邮件解析规则系列教程(一) Outlook2007 邮件客户端的Html邮件解析规则指南 微软的新版本Outlook 07的发布由于使用了Word的Html渲染代替了以往基于IE浏览器的Html页面渲染,给邮件设计者...

    Python发送邮件封装实现过程详解

    引言  在做接口测试的时候,我们不仅需要将测试结果以...SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件;Python对SMTP支持有smtplib和email两个模块,email负责构造邮

    python发送多人邮件没有展示收件人问题的解决方法

    使用python 2.7自带的email库来进行邮件的发送,但是发送后没有展示收件人列表内容 问题代码示例: # -*- coding:utf-8 -*- import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text ...

    详解python 发送邮件实例代码

    python 发送邮件实例 文件形式的邮件 #!/usr/bin/env python3 #coding: utf-8 import smtplib from emailmimetext import MIMEText from emailheader import Header sender = '***' receiver = '***' subject = '...

    发送邮件发送,先提一下SMTP

    //接着利用sina的SMTP来发送邮件,需要使用Microsoft .NET Framework SDK v1.1和它以上的版本 //基本权限 objMailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1...

    python自动邮件class

    结合一点点的HTML可以发送出任何形式的邮件。

    python-outlook自动发信-exchange-自动发邮件-outlook-办公自动化

    2. 在Outlook客户端邮件查看源码,将源码的html内容作为content参数传入可以发送指定HTML样式的邮件(注意类型选HTML);3. 在这个框架下可以随时新加自动邮件任务;4. sent_temp用于单任务测试;

Global site tag (gtag.js) - Google Analytics