Python SMTP 邮件发送教程:基础语法与实战示例
本文详细介绍Python中smtplib模块的使用方法及SMTP协议基础。涵盖SMTP对象创建参数、sendmail方法语法,并提供基于本地服务器及QQ第三方SMTP服务的完整代码示例,帮助用户快速掌握Python邮件发送功能。
SMTP协议简介
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它定义了一组用于从源地址到目的地址传送邮件的规则,并控制信件的中转方式。
Python smtplib模块介绍
Python的smtplib模块提供了一种便捷的途径来发送电子邮件,该模块对SMTP协议进行了简单的封装。
创建SMTP对象的语法如下:
SMTP对象创建语法
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
参数说明:
- host:SMTP服务器主机。你可以指定主机的IP地址或者域名(如runoob.com),此为可选参数。
- port:如果提供了host参数,需要指定SMTP服务使用的端口号,一般情况下SMTP端口号为25。
- local_hostname:如果SMTP运行在你的本机上,只需指定服务器地址为localhost即可。
Python SMTP对象使用sendmail方法发送邮件,其语法如下:
sendmail方法使用
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
参数说明:
- from_addr:邮件发送者地址。
- to_addrs:字符串列表,表示邮件发送的目标地址。
- msg:发送的消息内容。
这里需要注意第三个参数msg,它是一个字符串,表示邮件内容。邮件通常由标题、发信人、收件人、正文及附件等构成,发送时需确保msg符合SMTP协议定义的格式。
实例
运行以下实例前,需确保本机已安装支持SMTP的服务(如sendmail)。
本地SMTP服务发送实例
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = '973708513@qq.com' # 发送方
receiver = 'sutaoyu001@163.com' # 接收方
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('QQ像163发送测试文件....','plain','utf-8')
message['From'] = Header('Python教程...') # 发送者
message['To'] = Header('测试','utf-8') # 接受者
subject = 'Python SMTP测试'
message['subject'] = Header('utf-8')
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receiver, message.as_string())
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
# 邮件发送成功
若本机未安装sendmail服务,也可使用其他邮件服务商的SMTP服务(如QQ、网易、Google等)。
QQ邮箱第三方SMTP发送实例
import smtplib
from email.mime.text import MIMEText
from email.header import Header
#第三方SMTP服务
host="smtp.qq.com" #设置服务器
user="973708513" #用户名
password="xxxxxx" #口令
sender = '973708513@qq.com' # 发送方
receiver = 'sutaoyu001@163.com' # 接收方
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('QQ像163发送测试文件....','plain','utf-8')
message['From'] = Header('Python教程...') # 发送者
message['To'] = Header('测试','utf-8') # 接受者
subject = 'Python SMTP测试'
message['subject'] = Header('utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(host, 465) # 25 为 SMTP 端口号
smtpObj.login(user,password)
smtpObj.sendmail(sender, receiver, message.as_string())
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
# 邮件发送成功
以上为Python实现SMTP邮件发送的详细内容,更多关于Python SMTP的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









