Python SMTP 邮件发送教程:基础语法与实战示例

林舟
林舟
发布时间:2026-10-14| 7人浏览过
原创

本文详细介绍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的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。