python使用电子邮件模块smtplib的方法(发送图片 附件)实用可行
Smptp类定义:smtplib.SMTP(host[,port[,local_hostname[,,timeout]]]),作为SMTP的构造函数,功能是与smtp服务器建立连接,在连接成功后,就可以向服务器发送相关请求,比如登陆,校验,发送,退出等。host参数为远程smtp主机地址,比如stmp.163.com;port为连接端口,默认为25;local_hostname的作用是在本地的FQDN(完整的域名)发送HELO/EHLO指令,timeout为连接或尝试在多数秒超时,SMTP类具有如下方法:
SMTP.connect([host[,port]])方法,连接远程smtp主机方法,host为远程主机地址,port为远程主机smtp端口,默认25,也可以直接使用host:port形式表示,例如:SMTP.connect("smtp.163.com","25').
SMTP.login(user,password)方法,远程smtp主机的校验方法,参数为用户名与密码,如SMTP.login("18801457794@139.com",'123456').
SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options])方法,实现邮件的发送功能,参数依次为发件人,收件人,邮件内容,例如:SMTP.sendmail("python@163.com",'404408853@qq.com',body),其中body内容定义如下:
"""From:python@163.com
To:404408853@qq.com
Subject:test mail
test mail body"""
SMTP.starttls([keyfile[,certfile]])方法,启用TLS(安全传输)模式,所有SMTP指令都讲加密传输,例如使用gmail的stmp服务器时需要启动此项才能正常发送邮件
SMTP.quit()方法,端口smtp服务器的连接
下面通过实例列子来了解python是怎么发送邮件
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
 | 
[root@localhost smtplib]# cat simple1.py #!/usr/bin/env python# -*- coding: utf-8 -*-import smtplibimport stringHOST = "smtp.139.com" #定义smtp主机SUBJECT = "test" #定义邮件主题TO = "404408853@qq.com" #定义邮件收件人FROM = "18801457794@139.com" #定义邮件发件人text = "python test mail" #邮件的内容BODY=string.join(( #组装sendmail方法的邮件主体内容,各段以"\r\n"进行分隔  "From:%s" %FROM,  "To:%s" %TO,  "Subject:%s"%SUBJECT,  "",  text),"\r\n")    server = smtplib.SMTP() #创建一个SMTP对象server.connect(HOST,"25") #通过connect方法连接smtp主机server.starttls() #启动安全传输模式server.login("18801457794@139.com","123456") #邮件账户登录校验server.sendmail(FROM,TO,BODY) #邮件发送server.quit() #断开smtp连接 | 
执行这段代码,我们将受到一封邮件

实现HTML格式的数据报表邮件
纯文本的邮件内容已经不能满足我们多样化的需求,本示例通过引入email.mime的MIMETex类来实现支持HTML格式的邮件,支持所有HTML元素,包含表格,图片,动画,CSS样式,表单等。本示例使用HTML的表格定制完美的业务流量报表,实现代码如下:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
 | 
#!/usr/bin/env python#coding:utf-8import smtplibfrom email.mime.text import MIMEText #导入MIMEText类HOST = "smtp.139.com"SUBJECT = u"官网流量数据报表"TO = "404408853@qq.com"FROM = "18801457794@139.com"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>    <td bgcolor="#EFEBDE" height="100" style="font-size:13px">    1)日访问量:<font color=read>152433</font>访问次数:23651 页面浏览量:45123 点击数:545122 数据流量:504Mb<br>    2)状态码消息<br>      500:105 404;3264 503;214<br>    3)访客浏览器信息<br>      IE:50% firefox:10% chrome:30% other:10%<br>    4)页面信息<br>      /index.php 42153<br>      /view.php 21451<br>    </td>    </tr>  </table>""","html","utf-8")msg['Subject'] = SUBJECTmsg['FROM'] = FROMmsg['To'] = TOtry:  server = smtplib.SMTP()  server.connect(HOST,'25')  server.starttls()  server.login('18801457794@139.com','123456')  server.sendmail(FROM,TO,msg.as_string())  server.quit()  print "邮件发送成功"except Exception,e:  print "失败:" + str(e) | 
运行代码结果如图,

示例2:实现图文格式的服务器性能报表邮件
当要求包含图片数据的邮件内容时,需要引用MIMEImage类,若邮件主体由多个MIME对象组成,则同时需要引用MIMEMultipart类来进行封装。本示例通过MIMEText与MIMEImage类的组合来实现图文格式的服务器性能报表邮件的定制,实现代码如下
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
 | 
#!/usr/bin/env python#coding: utf-8import smtplib,stringfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.image import MIMEImageHOST ="smtp.139.com" #定义smtp主机SUBJECT = "金美美平台系统状态报表" #定义邮件主题TO = "404408853@qq.com,302803690@qq.com" #定义邮件收件人FROM = "18801457794@139.com" #定义邮件发件人TO_list = TO.split(TO)def addimg(src,imgid): #添加图片函数,参数1:图片路径,参数2:图片ID  fp = open(src,'rb') #打开文件  msgImage = MIMEImage(fp.read()) #创建MIMEImage对象,读取图片内容并作为参数  fp.close() #关闭文件  msgImage.add_header('Content-ID',imgid) #指定图片文件的Content-ID,<img>标签src用到  return msgImage #返回msgImage对象  msg = MIMEMultipart('related') #创建MIMEMultipart对象,采用related定义内嵌资源的邮件体msgtext = MIMEText("""<table width="600" border="0" cellspacing="0" cellspacing="4">  <tr bgcolor="#CECFAD" height="20" style="font-size:14px">  <td colspan=2>以下是211.157.111.41系统状态图</td>  </tr>  <tr bgcolor="#EFEBDE" height="100" style="font-size:13px">  <td>  <img src="cid:io"></td><td>  <img src="cid:load"></td>  </tr>  <tr bgcolor="#EFEBDE" height="100" style="font-size:13px">  <td>  <img src="cid:mem"></td><td>  <img src="cid:disk"></td>  </tr>  </table>""","html","utf-8") #<img>标签的src属性是通过Content-ID来引用的  msg.attach(msgtext) #MIMEMultipart对象附加MIMEText的内容msg.attach(addimg("img/bytes_io.png","io")) #使用MIMEMultipart对象附加MIMEImage的内容msg.attach(addimg("img/os_load.png","load"))msg.attach(addimg("img/os_mem.png","mem"))msg.attach(addimg("img/os_disk.png","disk"))  msg['Subject'] = SUBJECTmsg['FROM']=FROMmsg['To'] = TOtry:  server = smtplib.SMTP()  server.connect(HOST,"25")  server.starttls()  server.login('18801457794@139.com','123456')  server.sendmail(FROM,TO_list,msg.as_string())  server.quit()  print "邮件发送成功!"except Exception,e:  print "失败:"+ str(e) | 
代码运行效果如图

python使用电子邮件模块smtplib的方法(发送图片 附件)实用可行的更多相关文章
- Python中optionParser模块的使用方法[转]
		
本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...
 - Python 的 time 模块导入及其方法
		
时间模块很重要,Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能,讲解一下Python 的 time 模块导入及其方法. 1,time 模块导入 import time; # ...
 - python运维开发常用模块(6)发送电子邮件模块smtplib
		
1.模块常用方法 SMTP类定义:smtplib.SMTP([host[,port[,local_hostname[, timeout]]]]),作为SMTP的构造函数,功能是与smtp服务器建立连接 ...
 - 发送电子邮件模块smtplib
		
功能:smtplib模块是通过邮件服务器发送电子邮件,是smtp客户端的实现,支持邮件格式有:文本.HTML.Image.EXCEL等. 1 #!/usr/bin/env python 2 # cod ...
 - Python下OS模块重命名方法renames
		
在python中有很多强大的模块,其中我们经常要使用的就是OS模块,OS模块提供了超过200个方法来供我们使用,并且这些方法都是和数据处理相关的,这里介绍下重命名这个方法. OS的重命名方法是os.r ...
 - Python:urllib模块的urlretrieve方法
		
转于:https://blog.csdn.net/fengzhizi76506/article/details/59229846 博主:fengzhizi76506 1)功能: urllib模块提供的 ...
 - Python 之 安装模块的多种方法
		
1.自己写的模块,能够直接加入到路径下. 这样就能够直接调用. import sys sys.path.append("/home/username/") 2.单文件模块 直接把文 ...
 - [ Python入门教程 ] Python中JSON模块基本使用方法
		
JSON (JavaScript Object Notation)是一种使用广泛的轻量数据格式,Python标准库中的json模块提供了一种简单的方法来编码和解码JSON格式的数据.用于完成字符串和p ...
 - Python学习-32.Python中os模块的一些方法
		
首先肯定是要引入os模块了. import os getcwd方法: print(os.getcwd()) 上面的语句将会输出当前的工作目录,相当于C#中的Environment.CurrentDir ...
 
随机推荐
- [Python爬虫] 之十九:Selenium +phantomjs 利用 pyquery抓取超级TV网数据
			
一.介绍 本例子用Selenium +phantomjs爬取超级TV(http://www.chaojitv.com/news/index.html)的资讯信息,输入给定关键字抓取资讯信息. 给定关键 ...
 - 外网无法连接Kafka集群(报错:NoBrokersAvailable)
			
本地Consumer和Producer无法使用远程Kafka服务器的解决方法: 分别修改各台服务器Kafka配置文件server.properties, 在#listeners=PLAINTEXT:/ ...
 - EffectiveJava(23)为什么不能在新生代码中使用原生态类型
			
泛型类和泛型接口 声明一个或者多个类型参数的类或者接口. 为什么不要在新代码中使用原生态类型 原生态类型,即泛型不带参数的类型 如List的list,list就是其原生态类型 1.使用原生态类型,插入 ...
 - Django——Django,uwsgi Nginx组合建站
			
近来抽时间看了点关于python的资料,试着架设了下运行环境,于是写了本文记录之. 用到的软件: Django-1.6.1 uwsgi-2.0.7 python-3.3.3 nginx-1.7.7 安 ...
 - LoadRunner如何在脚本运行时修改log设置选项
			
LoadRunner如何在脚本运行时修改log设置选项?答案是使用lr_set_debug_message函数: lr_set_debug_message Sets the message level ...
 - utf8和utf-8的区别?
			
utf8和utf-8的区别? utf-8和utf8的区别? 今天再次区别 相信很多程序员刚开始也会有这样的疑惑,如题,我也是. 其实,他们可以这样来区分. 一.在php和html中设置编码,请 ...
 - linux 异步IO通信
			
一. 回顾 做java开发的,一定对BIO,NIO,AIO通信很了解了,现在再在下面罗列一下: 同步阻塞IO(JAVA BIO): 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时 ...
 - linux学习一个服务(未完)
			
学习一个服务的过程 1.了解服务的作用:名字 功能,特点 2.安装 3.配置文件位置,端口 4.服务启动关闭的脚本 5.此服务的使用方法 6.修改配置文件,实战举例 7.排错(从下到上,从内到外)
 - 修改IP核参数
			
有时需要重定制IP核时,需要打开IP核,可以试试用core generator 工具打开coregen.cgp文件.在core generator下修改IP核参数.
 - jquery,js,checkbox多选框复选框取值和赋值
			
今天一个同事不太会多选框的取值和赋值的问题,我帮他解决了一下,不想自己想的朋友可以参考一下. 获取checkBox的值,checkBox的html如下 <input type=" na ...