Python之发送电子邮件

一 点睛

电子邮件是最流行的互联网应用之一。在系统管理领域,我们常常使用邮件来发送告警信息、业务质量报表等,方便运维人员第一时间了解业务的服务状态。我们可以通过Python的smtplib模块来实现邮件的发送功能,模拟一个smtp客户端,通过与smtp服务器交互来实现邮件发送的功能,这可以理解成Foxmail的发邮件功能,在第一次使用之前我们需要配置smtp主机地址、邮箱账号及密码等信息,Python 2.3或更高版本默认自带smtplib模块,无需额外安装。

二 smtplib模块的常用类与方法

1 SMTP类定义

smtplib.SMTP([host[,port[,local_hostname[, timeout]]]]),作为SMTP的构造函数,功能是与smtp服务器建立连接, 在连接成功后,就可以向服务器发送相关请求,比如登录、校验、发送、退出等。

  • host:远程smtp主机地址,比如smtp.163.com
  • port:连接端口,默认为25
  • local_hostname:在本地主机的FQDN(完 整的域名)发送HELO/EHLO(标识用户身份)指令
  • timeout:连接或尝试在多少秒超时。

2 SMTP类的方法

2.1 SMTP.connect([host[,port]])方法,连接远程smtp主机方法, host为远程主机地址,port为远程主机smtp端口,默认25,也可以直接使用host :port形式来表示,例如:

SMTP.connect("smtp.163.com","25")

2.2 SMTP.login(user,password)方法,远程smtp主机的校验方法, 参数为用户名与密码。例如:

SMTP.login("python_2014@163.com","sdjkg358")

2.3 SMTP.sendmail(from_addr,to_addrs,msg[,mail_options, rcpt_options])方法,实现邮件的发送功能,参数依次为是发件人、收 件人、邮件内容,例如: 

SMTP.sendmail("python_2014@163.com","demo@domail.com", body)

其中body内容定义如下:

"""From: python_2014@163.com 

To: demo@domail.com

Subject: test mail 

test mail body"""

2.4 SMTP.starttls([keyfile[,certfile]])方法,启用TLS(安全传输) 模式,所有SMTP指令都将加密传输,例如使用gmail的smtp服务时需要启动此项才能正常发送邮件,例如:

SMTP.starttls()

2.5 SMTP.quit()方法,断开smtp服务器的连接。

三 实战

1 代码

import smtplib
import string

HOST = "smtp.qq.com"
SUBJECT = "Test email from Python"
TO = "798103175@qq.com"
FROM = "798103175@qq.com"
text = "Python rules them all!"
BODY = string.join((
    "From: %s" % FROM,
    "To: %s" % TO,
    "Subject: %s" % SUBJECT,
    "",
    text
), "\r\n")
server = smtplib.SMTP()
server.connect(HOST, "25")
#server.starttls()
server.login("798103175@qq.com", "QQ电子邮箱授权码")
server.sendmail(FROM, [TO], BODY)
server.quit()

2 效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值