Python发送电子邮件模块

一.简介:

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

二.smtplib模块的常用类与方法

smtp类 定义:smtp.SMTP([host[,port[,local_hostname[,timeout]]]]),作为smtp的构造函数,功能是与 smtp服务器建立连接,成功之后,就可以向服务器发送相关请求,如:登录,校验,发送,推出等。host参数为远程smtp主机地址,比 如:smtp.163.com,port 25,local_hostname的作用是在本地主机的FQDN发送HELO/EHLO(表示用户身份)指令,timeout为连接或者尝试的超时间。

三.案例

下面编写一个简单的示例,使用126的邮箱给qq邮箱发送测试邮件
!/usr/bin/python
#coding: utf-8
#mail:su_root@126.com
#htttp://www.mrliangqi.com
import  smtplib
import  string
HOST = "smtp.126.com"
SUBJECT = "HI,test email from  python!"
TO  = "905526265@qq.com"
FROM = "su_root@126.com"
TEXT = "hello  world"
BODY = string.join((
"From: %s" %FROM,
"TO: %s" % TO,
"Subject: %s" %  SUBJECT,
"",
TEXT
),"\r\n")
try:
server = smtplib.SMTP() #创建一个smtp()对象
server.connect(HOST,"25")   #连接远程主机smtp主机的方法
server.starttls() #启动安全传输模式
server.login("su_root@126.com","mailpwd")  #远程smtp主机方法。引号中是帐号和密码
server.sendmail(FROM,[TO],BODY) #邮件发送
server.quit() #断开smtp服务器
print "Mail sent successfully"
except exception, e:
print "Mail sendfail!",
四.测试
执行完上面案例脚本之后,查收qq邮箱会收到一封测试邮件。


发表评论

登录 后发表评论.