Python SMTP发送电子邮件的完整指南

码头散步
码头散步
发布时间:2026-10-14| 2人浏览过
原创

本文详细介绍如何使用Python的smtplib模块通过SMTP协议发送电子邮件。内容涵盖基础文本邮件的发送步骤、关键参数说明,以及如何配置MIME版本和内容类型来发送包含HTML标签的富文本邮件。提供完整的代码示例,帮助开发者快速实现邮件自动化功能。

SMTP协议与Python smtplib模块简介

简单邮件传输协议(SMTP)是用于在电子邮件服务器之间传输和路由邮件的标准协议。Python内置了smtplib模块,该模块提供了一个SMTP客户端会话对象,允许开发者将邮件发送至任何运行SMTP或ESMTP监听服务的互联网计算机。

  • sender:发件人的邮箱地址,类型为字符串。
  • receivers:接收者邮箱地址列表,每个接收者对应一个字符串元素。
  • message:按照相关RFC标准格式化的邮件内容字符串。

Python发送普通邮件示例

Python SMTP发送示例

以下是一个使用Python脚本发送普通文本电子邮件的简单示例。具体代码实现如下:


#!/usr/bin/python3

import smtplib

sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']

message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
Subject: SMTP e-mail test

This is a test e-mail message.
"""

try:
  smtpObj = smtplib.SMTP('localhost')
  smtpObj.sendmail(sender, receivers, message)     
  print "Successfully sent email"
except SMTPException:
  print "Error: unable to send email"

在上述代码中,邮件内容使用三重引号包裹,需确保标题格式正确。一封标准的电子邮件必须包含“发件人(From)”、“收件人(To)”和“主题(Subject)”三个头部字段,并且头部与邮件正文之间必须用一个空行分隔。

为了发送邮件,程序需要使用smtpObj连接到本地计算机上运行的SMTP服务器。随后调用sendmail方法,传入邮件内容、发件人地址和目标收件人地址作为参数。需要注意的是,即使这些地址已经包含在邮件头部中,它们仍必须作为参数显式传递,因为SMTP协议通常依赖这些参数来进行路由,而不仅仅依赖邮件内部信息。

如果本地计算机未运行SMTP服务器,可以使用smtplib客户端连接至远程SMTP服务器。若不使用Webmail服务(如Gmail或Yahoo! Mail),则必须向电子邮件提供商获取外发邮件服务器的详细配置信息,例如服务器地址和端口号。


mail = smtplib.SMTP('smtp.gmail.com', 587)

Python发送HTML格式邮件

使用Python发送HTML电子邮件。当使用Python发送纯文本消息时,所有内容均被视为普通文本。即使消息中包含HTML标签,它们也会被当作普通字符显示,而不会按照HTML语法进行渲染。然而,Python提供了发送实际HTML格式邮件的选项。

在发送HTML电子邮件时,可以指定MIME版本、内容类型以及字符集,以确保邮件被正确解析。具体实现代码如下:

以下是将HTML内容作为电子邮件正文发送的示例:


#!/usr/bin/python3

import smtplib

message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test

This is an e-mail message to be sent in HTML format

<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""

try:
  smtpObj = smtplib.SMTP('localhost')
  smtpObj.sendmail(sender, receivers, message)     
  print "Successfully sent email"
except SMTPException:
  print "Error: unable to send email"

以上即为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 算法库。