Python对SMTP的支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
SMTP是从源地址到目的地址传送邮件的规则,由该协议控制信件的中转方式。
Python的smtplib提供了一种很方便的途径发送电子邮件,对SMTP协议进行了简单的封装。
Python创建SMTP对象的语法如下:
smtpObj=smtplib.SMTP([host [, port [, local_hostname]]])
语法中各个参数说明如下。
● host:SMTP服务器主机。可以指定主机的IP地址或域名(如www.baidu.com),是可选参数。
● port:如果提供了host参数,就需要指定SMTP服务使用的端口号。一般情况下,SMTP的端口号为25。
● local_hostname:如果SMTP在本地主机上,只需要指定服务器地址为localhost即可。
如果在创建SMTP对象时提供了host和port两个参数,在初始化时会自动调用connect方法连接服务器。
Python SMTP对象使用sendmail方法发送邮件发送邮件的语法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]
语法中各个参数说明如下。
● from_addr:邮件发送者的地址。
● to_addrs:字符串列表,邮件发送地址。
● msg:发送消息。
msg是字符串,表示邮件内容。我们知道邮件一般由标题、发信人、收件人、邮件内容、附件等构成,发送邮件时,要注意msg的格式。这个格式就是SMTP协议中定义的格式。
SMTP类中提供了表14-1所示的一些常用方法。
表14-1 SMTP类的常用方法

普通文本邮件发送的实现关键要将MIMEText中的_subtype设置为plain。首先导入smtplib和MIMEText。创建smtplib.smtp实例,连接邮件SMTP服务器,登录后发送,具体代码如下(send_email.py):