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("[email protected]",‘123456‘).
SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options])方法,实现邮件的发送功能,参数依次为发件人,收件人,邮件内容,例如:SMTP.sendmail("[email protected]",‘[email protected]‘,body),其中body内容定义如下:
"""From:[email protected]
To:[email protected]
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

[[email protected] smtplib]# cat simple1.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import smtplib

import string

HOST = "smtp.139.com" #定义smtp主机

SUBJECT = "test" #定义邮件主题

TO = "[email protected]" #定义邮件收件人

FROM = "[email protected]" #定义邮件发件人

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("[email protected]","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-8

import smtplib

from email.mime.text import MIMEText #导入MIMEText类

HOST = "smtp.139.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>

    <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‘] = SUBJECT

msg[‘FROM‘] = FROM

msg[‘To‘] = TO

try:

  server = smtplib.SMTP()

  server.connect(HOST,‘25‘)

  server.starttls()

  server.login(‘[email protected]‘,‘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-8

import smtplib,string

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.mime.image import MIMEImage

HOST ="smtp.139.com" #定义smtp主机

SUBJECT = "金美美平台系统状态报表" #定义邮件主题

TO = "[email protected],[email protected]" #定义邮件收件人

FROM = "[email protected]" #定义邮件发件人

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‘] = SUBJECT

msg[‘FROM‘]=FROM

msg[‘To‘] = TO

try:

  server = smtplib.SMTP()

  server.connect(HOST,"25")

  server.starttls()

  server.login(‘[email protected]‘,‘123456‘)

  server.sendmail(FROM,TO_list,msg.as_string())

  server.quit()

  print "邮件发送成功!"

except Exception,e:

  print "失败:"+ str(e)

代码运行效果如图

时间: 2024-10-26 16:07:18

python使用电子邮件模块smtplib的方法(发送图片 附件)实用可行的相关文章

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类具有

python的邮件模块smtplib&email

import smtplib import string from email.mime.text import MIMEText def send_mail(host, sender, sender_passwd, receiver, content_file, port="25"):     # print "create smtp object"     server = smtplib.SMTP()     # print "conncect sm

Python中optionParser模块的使用方法[转]

本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. 示例如下: ? 1 2 3 4 5 6 7 8

Python 的 time 模块导入及其方法

时间模块很重要,Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能,讲解一下Python 的 time 模块导入及其方法. 1,time 模块导入 import time; # 引入time模块 ticks = time.time() print "当前时间戳为:", ticks 输出结果 时间戳 2,其方法调用 时间戳 → 时间元组 time.localtime(1538271871.226226) 时间元组 → 时间戳 time.mktime((2018,

python 发送电子邮件模块smtplib

#!/usr/bin/python # -*- coding: utf-8 -*- import smtplib import string HOST = "smtp.uinx.com.cn" SUBJECT = "Test email from Python" #TO = "[email protected]" #TO = "[email protected]" TO = "[email protected]&qu

Python中pickle模块的使用方法详解

python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象.本文和大家分享的就是python开发中pickle模块的相关使用,一起来看看吧. 基本接口: pickle.dump(obj, file, [,protocol]) 注解:将对象obj保存到文件file中去. protocol为序列化使用的协议版本,0:ASCII协议,所

python发送电子邮件模块smtplib

一.简介: 电子邮件是最流行的互联网应用之一,在系统管理中,经常需要使用邮件来告警信息,业务质量报告等.方便运维人员在第一时间了解业务的服务状态,将通过使用python的smtplib模块来实现邮件的发送功能,能模拟一个smtp的客户端,通过与smtp服务器交互来实现邮件的发送功能,可以理解成foxmail的发邮件功能,在第一次使用的时候需要诶只smtp的主机地址,邮箱帐号密码等信息.python 2.4以上的版本默认就自带了smtplib模块,无需额外安装. 二.smtplib模块的常用类与方

发送电子邮件模块smtplib

功能:smtplib模块是通过邮件服务器发送电子邮件,是smtp客户端的实现,支持邮件格式有:文本.HTML.Image.EXCEL等. 1 #!/usr/bin/env python 2 # coding:UTF-8 3 import smtplib 4 import string 5 host = "smtp.qq.com" #定义smtp主机 6 subject = "Test email from Python" #定义邮件主题 7 to_mail = &q

python学习笔记之电子邮件模块smtplib

在系统管理领域,我们常常用邮件来发送管理信息.业务质量报表等,方便运维人员第一时间了解业务的服务状态.通过python的smtplib模块来实现邮件的发送功能,模拟一个smtp客户端,通过与smtp服务器交互来实现邮件发送的功能. smtplib模块的常用类与方法 SMTP.connect([host[,port]])方法,连接远程smtp主机方法,host为远程主机地址,port为远程主机smtp端口,默认为25,也可以直接使用host:port形式来表示,例如:SMTP.connect("s