Python smtplib实现纯文本邮件发送:配置、代码与排错指南

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

本文详细介绍如何使用Python的smtplib库发送纯文本邮件。重点讲解163邮箱开启SMTP服务及获取客户端授权码的配置方法,提供完整代码示例与流程解析,并总结500/530等常见服务器错误及认证失败的排查技巧,帮助开发者快速实现邮件发送功能。

近期学习了利用Python标准库smtplib进行邮件发送的操作。在此过程中遭遇并解决了一系列报错与配置难题,现将具体实践过程与经验整理如下。

邮箱基础配置

为何必须进行邮箱配置?具体需要执行哪些操作?

多数免费邮箱服务商默认关闭了SMTP(简单邮件传输协议)和POP3(邮局协议版本3)服务。SMTP用于邮件发送,POP3用于邮件接收,二者均属于应用层协议,这是计算机网络课程中的基础概念。

配置的核心目的是开启上述协议服务。若未开启,Python代码将无法通过SMTP协议控制邮件的发送与接收操作。

完成配置后,邮箱系统会生成一个客户端授权码。该授权码用于登录验证,替代原始登录密码,请务必妥善保存。以163邮箱为例,用户可自主设置此授权码。

代码实现邮件发送

遵循“先见代码,后析原理”的学习路径,具体实现代码如下:

# coding:utf-8

import smtplib
from email.mime.text import MIMEText
from email.header import Header

"""
请确保自己的邮箱的smtp协议开启,都则会出现认证的错误的,如ssh等
"""


sender = "1564086XXXX@163.com"
# 收件人,可以是多个
receivers = ['102170XXXX@qq.com']

# 三个参数:第一个为纯文本,第二个plain设置文本格式,第三个为编码格式
message = MIMEText('这里是发送的邮件的主要的内容。Pure Text Here!','plain','utf-8')
message['From'] = Header('来自Mark','utf-8')
message['To'] = Header('测试标题','utf-8')

subject = '哈哈哈哈哈哈,这是邮件的主题 '
message['Subject'] = Header(subject,'utf-8')

try:
 smtpObj = smtplib.SMTP()
 smtpObj.connect('smtp.163.com',25)
 smtpObj.login(sender,'你的客户端授权码')
 smtpObj.sendmail(sender,receivers,message.as_string())
 smtpObj.quit()
 print '邮件已成功发送了'
except smtplib.SMTPException,e:
 print e.message

运行结果验证:

D:\Software\Python2\python.exe E:/Code/Python/MyTestSet/mail/PureText.py 邮件已成功发送了

Process finished with exit code 0

上述输出表明邮件发送操作已成功完成。

代码逻辑深度解析

接下来深入分析邮件发送的具体执行流程。核心逻辑集中在以下代码段:

smtpObj = smtplib.SMTP()
smtpObj.connect('smtp.163.com',25)
smtpObj.login(sender,'你的客户端授权码')
smtpObj.sendmail(sender,receivers,\
message.as_string()
smtpObj.quit()

分析可知,完整流程包含以下步骤:

  • 初始化SMTP服务对象
  • 建立服务器连接
  • 执行客户端登录认证
  • 执行邮件发送指令
  • 断开连接并退出登录

其中,登录认证与邮件发送是核心环节。登录时需使用之前获取的客户端授权码,操作相对简单。发送邮件时需注意参数设置:发件人为单一字符串,而收件人为列表形式,支持包含多个邮箱地址,从而实现群发功能。

此外,需注意使用MIME类型定义邮件内容,并指定utf-8编码格式。这部分属于基础技术细节,掌握基本用法即可。

综上所述,通过Python发送纯文本邮件的操作流程清晰且易于实现。

常见错误排查与总结

错误类型一:出现500、530等以5开头的错误代码,通常提示SSH或服务器内部异常。根据HTTP及SMTP状态码常识,5xx系列错误多源于服务器端问题,而非客户端代码逻辑错误。此时应优先检查邮箱服务商是否已正确开启SMTP/POP服务,尽管代码无误的概率极低,但仍需排除服务器配置问题。

错误类型二:未填写授权码或误填原始邮箱密码,导致认证失败。此为常见低级错误。开启SMTP服务后,系统会通过短信发送授权码,提示用户替代原密码使用。务必使用正确的客户端授权码进行登录认证。

错误类型三:代码层面的语法或逻辑错误,如遗漏必填参数或未正确设置编码。此类问题应通过严谨的代码审查和测试来避免,确保代码实现的准确性。

以上内容涵盖了Python使用smtplib发送纯文本邮件的配置、实现及排错全过程,希望能为读者提供有益参考,欢迎持续关注与支持。

相关标签:

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

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