实现功能1:查询数据,然后做成报表,再发送这些报表
代码:
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# -*- coding: cp936 -*-
2
3from email.Header import Header
4from email.MIMEText import MIMEText
5from email.MIMEMultipart import MIMEMultipart
6import smtplib, datetime
7
8#创建一个带附件的实例
9msg = MIMEMultipart()
10
11#构造附件
12att = MIMEText(open('d:\\tc201.rar', 'rb').read(), 'base64', 'gb2312')
13att["Content-Type"] = 'application/octet-stream'
14att["Content-Disposition"] = 'attachment; filename="tc201.rar"'
15msg.attach(att)
16
17#加邮件头
18msg['to'] = 'zhousl@xxx.com'
19msg['from'] = 'zhousl@xxx.com'
20msg['subject'] = Header('冒烟测试结果 (' + str(datetime.date.today()) + ')', \
21 'gb2312')
22#发送邮件
23server = smtplib.SMTP('smtp.xxx.com')
24server.sendmail(msg['from'], msg['to'], \
25 msg.as_string())
26server.close
4、几个值得注意的地方
1)构造附件时注意采用正确的字符集,这个困惑我好久,开始没有用gb2312,发过去的压缩文件就是坏的;
2)上面的代码中没有包括登录smtp服务器的指令,而Internet上面的smtp服务器一般都是要求认证的,可以通过smtp.login方法进行登陆
3)sendmail方法中的参数to可以是包含多个地址的元组,这样可以发送邮件给多个人了
4)Python2.4以前的版本是不支持gb2312字符集的,要下载安装Python2.4才能跑上面的代码,当然2.4.1肯定会更好一点
相关推荐
这里是目前最有效的实现Python发送Google邮件,不仅仅提供了发送纯文本的Google邮件,以及发送HTML、图片附件、Word附件的邮件。另外提供了在服务器端不使用Python而是使用Shell脚本的方式实现。我保证你看了之后...
尤其在处理耗时较长的任务,如发送大量邮件时,使用多进程可以显著缩短整体处理时间。本课程设计的目标是利用Python实现多进程发送邮件的功能。 首先,我们需要了解Python中的`multiprocessing`模块,它是Python...
仇明使用了开源项目Zmail,该项目可以便捷地实现电子邮件的收发,并且构建纯文本或HTML格式的电子邮件,同时还能发送附件。 最后,作者简介中仇明是江苏旅游职业学院的副教授,硕士,主要研究方向为计算机网络和...
以上代码展示了使用Python发送HTML邮件的基本流程。其他编程语言如Java(使用JavaMail API)、C#(使用System.Net.Mail)或Node.js(使用nodemailer库)也有类似的机制。总的来说,理解邮件发送的基本原理和编程语言...
subject = 'Python发送的报表' body = '这是使用Python自动发送的报表邮件。' msg = MIMEMultipart() msg['From'] = sender msg['To'] = receiver msg['Subject'] = subject ``` 若邮件内容包含纯文本和HTML两种...
本实战案例将深入探讨如何使用Python来实现自动发送邮件的功能,这对于日常的工作汇报、数据分享或是系统通知都有着极大的便利性。Python的smtplib和email库为我们提供了构建邮件并发送的必要工具。 首先,我们需要...
本笔记主要介绍了使用 Python 实现邮件发送测试运维报警的相关知识点,涵盖了 SMTP 介绍、QQ 环境设置、MIME 操作、发送各种文档和图片等内容。 1. SMTP 介绍 SMTP(Simple Mail Transfer Protocol)即简单邮件...
以上是使用Python发送HTML邮件的基本过程。需要注意的是,不同的邮件服务商可能有不同的SMTP服务器地址和端口号,以及可能需要邮箱授权码而非密码来登录。例如,163邮箱的SMTP服务器是`smtp.163.com`,而QQ邮箱的...
这是使用Python发送的HTML邮件。 你可以插入任何HTML元素,如图片、链接等。 </html> """ msg = MIMEMultipart("alternative") msg["From"] = from_email msg["To"] = to_email msg["Subject"] = subject ``` ...
Python编写的自动发送QQ邮件的脚本是一种便捷的通信工具,尤其适用于自动化任务中的通知功能。...通过学习和理解这个脚本,你可以掌握如何使用Python进行邮件发送,并在此基础上开发出更多功能丰富的邮件应用。
如果要发送HTML邮件,只需将'plain'替换为'html'。 4. **SMTP_SSL与安全连接**: 对于某些SMTP服务器,可能需要使用SSL或TLS加密连接。Python的`smtplib`库支持`SMTP_SSL`类,它使用SSL连接。而`SMTP.starttls()`...
在实际项目中,你可能需要更复杂的功能,比如添加附件、处理HTML邮件或者群发邮件。PostMail允许你在POST请求中通过`attachments`字段上传文件,或者通过`html`字段提供HTML内容。对于群发邮件,只需在`to`字段中用...
要使用Python发送带有图片的邮件,可以按照以下步骤进行: 导入所需的模块:首先,导入smtplib和email相关的模块,用于发送邮件。 创建邮件对象:使用email模块创建一个邮件对象。设置邮件的发件人、收件人、主题...
2 利用Python发送邮件 2.1 发送一封简单的电子邮件 2.2 发送含HTML样式的电子邮件 2.3 发送带附件的电子邮件 2.4 以邮件的内容发送,而不是作为附件形式发送 2.5 群发邮件 2.6 定时发送邮件 2.7 发送CSV文件...
在Python编程中,发送邮件是一项常见的任务,尤其在自动化测试或通知系统中。要实现这一功能,我们可以利用Python内置的`smtplib`和`email`模块。`smtplib`负责处理邮件的发送过程,而`email`则用于构建邮件内容。在...
2. **模板支持**:库支持使用模板来构建邮件内容,可以方便地进行HTML邮件的制作,提高了邮件的可读性和美观度。 3. **多邮件服务器支持**:fluentmail可以轻松切换不同的SMTP服务器,适应不同的邮件发送需求。 4....
在这个“python爬虫发邮件示例demo”中,我们将探讨如何结合Python的爬虫技术和邮件发送功能,实现自动抓取数据并将其通过电子邮件发送出去。 首先,我们需要了解Python中的两个关键库:`requests` 和 `...
本项目聚焦于使用Python来定时爬取微博某博主的主页,并筛选出包含特定关键字“哈罗”的微博,之后通过电子邮件将这些内容发送出去。这涉及到几个关键的技术点,下面我们将逐一详细讲解。 首先,我们要使用Python的...
如果需要发送HTML邮件或者包含附件,使用`MIMEMultipart`。 ```python msg = MIMEMultipart() msg['From'] = '你的发件人邮箱' msg['To'] = '收件人邮箱' msg['Subject'] = '邮件主题' msg.attach(MIMEText...