Python SMTP配置参数并发送邮件

Miles
Miles
发布时间:2026-10-14| 5人浏览过
原创

本文介绍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: 无法发送邮件")

# 邮件发送成功

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

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

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 算法库。