Python smptlib模块:邮件传输SMPT协议
SMPT(Simple Mail Transfer Protocol)协议与 POP3(Post Office Protocol)协议提供电子邮件服务。SMPT 是网络上传输电子邮件的标准,定义应用程序如何在网络上交换电子邮件。SMPT 协议负责将电子邮件放置在电子邮箱内,若要从电子邮箱内取出电子邮件,则需要 POP3 协议。
Python 的 smptlib 模块提供 SMTP 协议的客户端接口,用于传输电子邮件到网络上的其他机器。
smptlib 模块定义一个 SMTP 类,用于创建一个 SMTP 连接。SMTP 类的语法如下:
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
Python 的 smptlib 模块提供 SMTP 协议的客户端接口,用于传输电子邮件到网络上的其他机器。
smptlib 模块定义一个 SMTP 类,用于创建一个 SMTP 连接。SMTP 类的语法如下:
class SMTP([host [, port]])
其中,参数 host 是主机名称。SMTP 类的实例变量的方法列表如下:- connect(host [, port]):连接到 (host, port),port 的默认值是 25。
- sendmail(from_addr, to_addrs, msg [, mail_options, rcpt_options]):送出电子邮件。其中,from_addr 是 RFC 822 from-address 字符串;to_addr 是 RFC 822 to-address 字符串;msg 是一个信息字符串。
- quit():结束SMTP连接。
1. 发送文本格式的邮件
下面的示例从 chengcai@163.com 寄出一封电子邮件到 sanduo@163.com。#使用smptlib模块实现 import smtplib #指定SMTP服务器 host = "smtp.163.com" #寄件者的电子邮件信箱 sender = "chengcai@163.com " #收件者的电子邮件信箱 receipt = "sanduo@163 .com " #电子邮件的内容 msg ="""你好: 这是一个测试的电子邮件""" #创建SMTP类的实例变量 myServer = smtplib. SMTP (host) #寄出电子邮件 myServer . sendmail (sender, receipt, msg) #关闭连接 myServer.quit()
2. 发送HTML格式的邮件
使用 Python 可以发送 HTML 格式的邮件。发送 HTML 格式的邮件与发送纯文本消息的邮件不同之处就是将 MIMEText 中 _subtype 设置为 html。代码如下:import smtplib from email . mime. text import MIMEText from email .header import Header sender = 'qingukej i123456@163. com' receivers = ['357975357@qq.com'] # 接收邮件,可设置为用户的QQ邮箱或其他邮箱 mail_ msg = """ <p>电子邮件内容</p> <p><a href="http:/ /www . baidu.com">百度搜索</a></p> """ message = MIMEText (mail_ msg,'html', 'utf-8') message[ 'From'] = Header ("Python语言",'utf-8') message[ 'To'] = Header ("示例课堂",'utf-8') subject = 'Python SMTP 邮件测试' message[ ' Subject'] = Header (subject, 'utf-8') try : smtpObj = smtplib. SMTP( 'localhost') smtpObj . sendmail (sender, receivers, message.as_ string() ) print (" 邮件发送成功") except smtplib. SMTPException: print ("Error: 无法发送邮件")
3. 发送带附件的邮件
Python 发送带附件的邮件,首先创建 MIMEMultipart() 实例;然后构造附件,如果有多个附件,就可依次构造;最后利用 smtplib.smtp 发送。代码如下:import smtplib from email .mime.text import MIMEText from email .mime .multipart import MIMEMultipart from email.header import Header sender = 'qingukeji123456@163. com' receivers = [ '357975357@qq.com'] # 接收邮件,可设置为用户的QQ邮箱或其他邮箱 #创建一个带附件的实例 message = MIMEMultipart () message['From'] = Header ("Python语言",'utf-8') message['To'] = Header ("示例课堂",'utf-8') subject = 'Python SMTP 邮件测试' message['Subject'] = Header (subject, 'utf-8') #邮件正文内容 message.attach (MIMEText('这是Python邮件发送测试....', 'plain', 'utf-8')) #构造附件1,传送当前目录下的book1. txt文件 att1 = MIMEText(open('book1.txt','r').read(),'base64' ,'utf-8') att1 [ "Content- Type"] = ' application/ octet-stream ' #这里的filename为邮件中显示的名字 att1 ["Content-Disposition"] = 'attachment; filename=" book1 . txt"' message .attach (att1) #构造附件2,传送当前目录下的book2.txt文件 att2 = MIMEText (open( 'book2. txt', ' r') . read() ,'base64', 'utf-8') att2 [ "Content- Type"] ='appl ication/ octet-stream ' att2 ["Content-Disposition"] = 'attachment; filename= "book2. txt"' message.attach (att2) try : smtpObj = smtplib. SMTP(' localhost') smtpObj . sendmail (sender, receivers, message.as_string() ) print (" 邮件发送成功") except smtplib. SMTPException: print ("Error: 无法发送邮件")
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。