Python SMTP配置参数并发送邮件
本文介绍Python中smtplib模块的使用,涵盖SMTP对象创建、sendmail方法参数详解及常见配置。通过本地Sendmail和第三方SMTP(如QQ邮箱)两个实例,演示如何构建邮件内容、设置发件人与收件人,并处理发送异常,帮助开发者快速掌握Python发送邮件的核心流程。
SMTP协议与Python smtplib简介
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它定义了一套从源地址到目的地址传送邮件的规则,用于控制信件的中转方式。
Python的smtplib模块提供了一种便捷的途径来发送电子邮件,它对SMTP协议进行了简单的封装。
SMTP对象创建与参数配置
创建SMTP对象的语法如下所示:
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
相关参数说明如下:
- host:指定SMTP服务器的主机名或IP地址(例如runoob.com),此为可选参数。
- port:若提供了host参数,需指定SMTP服务使用的端口号,通常默认为25。
- local_hostname:若SMTP服务器运行在本机,只需将服务器地址指定为localhost即可。
sendmail方法详解
Python SMTP对象通过sendmail方法发送邮件,其语法格式为:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
参数说明如下:
- from_addr:邮件发送者的地址。
- to_addrs:字符串列表,指定邮件接收者的地址。
- msg:发送的消息内容。
需注意第三个参数msg,它必须是符合SMTP协议格式定义的字符串。邮件通常包含标题、发信人、收件人、正文及附件等部分,因此在构建msg时需确保格式正确。
Python发送邮件实例
以下是具体实例演示:
运行以下实例前,需确保本机已安装支持SMTP的服务(如sendmail)。
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等)。
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: 无法发送邮件")
# 邮件发送成功
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









