百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

使用 Python 向多个地址发送电子邮件

zhezhongyun 2025-09-13 12:54 7 浏览

在本文中,我们将演示如何使用 Python 编程语言向使用不同电子邮件地址的不同收件人发送电子邮件。 具体来说,我们将向许多不同的人发送电子邮件。


使用 Python 向多个地址发送电子邮件

Python 不仅仅是一种用于构建网站或使用人工智能的编程语言。

它是一种可以在后端、前端或 Web 应用程序的整个堆栈上使用的语言。 因此,它的多功能性使其成为有用的工具。

Python 现在已经发展成为一种也可用于自动发送电子邮件的语言。 涉及电子邮件的任务可以使用 Python 轻松实现自动化。

我们需要几行代码来使用 Python 同时向多个不同的收件人发送电子邮件。

在这篇 Python 文章中,我们将演示如何使用 Python 同时向多个收件人发送电子邮件。

使用 Python 发送电子邮件并不难,特别是如果您使用 smtplib 等模块。 该库将处理连接到邮件服务器并为您发送邮件所需知道的所有信息。

我们将逐步引导您配置 Python 脚本,以便它可以将电子邮件发送到许多不同的地址。 此外,我们将包含一些示例代码供您在开始时使用。

如果我们要使用smtplib,首先需要与服务器建立连接。 我们需要提供服务器的位置以及我们的登录名和密码才能访问该文件。

建立连接后,我们就可以开始互相发送消息了。

要发送消息,我们首先需要构建一个消息对象,然后为发件人、收件人和主题字段提供标头。 我们还可以添加抄送和密件抄送收件人。

消息生成后,我们可以选择添加文本、HTML 或附件。

当我们准备发送消息时,我们可以使用 smtplib 模块中包含的 sendmail() 函数。 该技术需要接收者列表,然后与列表中的每个人进行通信。

那么让我们从 smtplib 开始吧。


Python 中的 smtplib 模块

smtplib 是 Python 中的内置模块。 它有客户端会话对象。

smtplib 定义了一个 SMTP 客户端会话对象。 此对象可用于将电子邮件传送到任何连接到互联网并运行 SMTP 或 ESMTP 侦听器守护程序的计算机。

应用程序程序员不应该直接在他们的工作中使用这个模块。 正在构建脚本以自动执行系统管理活动的系统管理员会发现访问此资源很有价值。

smtplib 模块类

smtplib 模块定义了以下类:

  1. SMTP - SMTP 客户端会话对象
  2. SMTP_SSL - 通过 SSL 连接的 SMTP 客户端会话
  3. IMAP4 - IMAP4 客户端会话对象
  4. POP3 - POP3 客户端会话对象

所有这些类都具有相同的方法和属性。

smtplib 模块异常

smtplib 模块还定义了以下异常:

  1. SMTPException - 所有与 SMTP 相关的异常的基类。
  2. SMTPServerDisconnected - SMTP 服务器意外断开。
  3. SMTPResponseException - SMTP 服务器返回了 2xx 以外的错误代码。
  4. SMTPSenderRefused - SMTP 服务器拒绝接受发件人的地址。
  5. SMTPRecipientsRefused - SMTP 服务器拒绝接受所有收件人地址。
  6. SMTPDataError - SMTP 服务器不接受消息数据。
  7. SMTPConnectError - 无法连接 SMTP 服务器。
  8. SMTPHeloError - SMTP 服务器没有正确响应 HELO 命令。
  9. SMTPNotSupportedError - SMTP 服务器不支持请求的功能。
  10. SMTPAuthenticationError - SMTP 服务器不接受用户名/密码。

让我们转到使用 Python 发送电子邮件的主题。


在 Python 中使用 smtplib 发送电子邮件

众所周知,谷歌一直在打击安全性较低的应用程序访问 Gmail 帐户的行为。 这对许多用户来说是一个很大的挫败感,尤其是那些依赖 Python 通过他们的 Gmail 帐户发送电子邮件的用户。

遗憾的是,Google 不再允许 Less Secure App 访问 Gmail 帐户。 如果我们想使用 Python 的 smtplib 模块通过我们的 Gmail 帐户发送电子邮件,我们需要采取一些额外的步骤来确保您的帐户安全。

因此,我们要做的第一件事是控制对安全性较低的应用程序的访问。


控制对不太安全的应用程序的访问

您可能听说过,Google 已停止为一项名为 Less Secure App 的功能提供支持。 此功能允许您使用 Microsoft Outlook、Thunderbird 或 Apple Mail 等程序访问您的 Gmail 帐户。

这听起来像是痛苦; 不过,这是一件好事! 不太安全的应用程序是一个主要的安全风险,谷歌不再支持它们,它们有助于保护您的帐户安全。

在我们的例子中,我们希望 Python 的 smtplib 访问我们的 Gmail,别担心! 我们不需要提供我们的 Gmail 帐户密码。

我们可以按照以下简单步骤安全地切换:

  • 使用安全连接
  • 通过 Gmail 帐户发送电子邮件时始终使用安全连接。 Gmail 提供两种不同类型的连接:SSL 和 TLS。
  • SSL(安全套接字层)是两种协议中较旧的一种,不如 TLS 安全。 但是,它仍然比未加密的连接更安全。
  • TLS(传输层安全)是一种比 SSL 更新、更安全的协议。 如果可用,Gmail 将自动使用 TLS。
  • 登录 Gmail 帐户
  • 在我们使用 Python 模块 smtplib 发送任何电子邮件之前,我们必须先登录我们的帐户,因为我们需要我们的电子邮件和从我们的 Gmail 帐户生成的密码。
  • 管理帐户
  • 登录帐户后,我们需要单击 Gmail 配置文件的图标。 我们将看到一个下拉菜单和一个带有 [管理您的 Google 帐户] 的选项。
  • 我们必须单击它才能进入下一步。
  • 安全
  • 单击 [管理您的 Google 帐户] 后,我们将被重定向到下一个页面,我们可以在其中找到安全选项。 我们将不得不点击它。
  • 登录谷歌
  • 单击“安全”后,我们将被重定向到 Gmail 的另一部分,我们可以在其中找到“登录 Google”选项。
  • 下图向我们展示了登录 Google 有两个选项。
  • 两步验证
  • 应用密码

  • 启用两步验证
  • 另一个重要的安全措施是为您的 Gmail 帐户启用双因素身份验证。 双因素身份验证通过要求您输入手机中的代码和密码来增加额外的安全层。
  • 现在我们必须先打开两步验证。 这很容易; 你可以在几秒钟内完成。
  • 应用密码
  • 完成两步验证后,我们必须使用 App Passwords 从我们的 Gmail 帐户生成密码。
  • 当我们点击它时,我们将被重定向到下面提到的页面。

现在我们必须检查选择应用程序和选择设备中的选项。

在我们的例子中,我们将选择邮件和 Windows 计算机或任何其他设备以进一步移动并获取密码。 在此之后,我们将单击“生成”按钮。

一旦我们点击生成按钮,我们将被重定向到另一个页面,在那里我们可以看到谷歌已经为我们的电子邮件生成了一个密码,我们可以在使用 Python 的 smtplib 发送电子邮件时使用它。

现在我们已经安全地为我们的电子邮件生成了密码。 我们现在可以转移到 Python 以使用 smtplib 发送电子邮件。


在 Python 中使用 smtplib 发送电子邮件

smtplib 模块使使用 Python 发送电子邮件变得容易。 使用 smtplib 发送电子邮件只需几个步骤。

首先,我们需要创建一个 SMTP 对象。 接下来,我们需要使用 connect() 方法连接到服务器。

最后,我们可以使用 msg.set_content 方法发送电子邮件。 让我们深入研究代码的步骤。

  • 导入库
  • 我们将首先导入 smtplib。 这是协议,该协议有助于发送电子邮件。
  • 电子邮件格式
  • 我们使用 email.message import EmailMessage 在 Python 中使用电子邮件格式。 如主题、发件人、收件人和发送。
  • 电子邮件地址
  • 现在我们将用倒逗号写下我们的电子邮件地址。 我们要从中发送电子邮件的电子邮件。
  • 密码
  • 我们现在将写入我们之前通过 Gmail 生成的生成密码。
  • 访问 Gmail 数据库
  • 要访问 Gmail 的数据库,我们将使用 smtplib.SMTP_SSL('smtp.gmail.com', 465)。 它允许我们连接到 Gmail 的数据库。
  • 登录
  • 现在我们将使用 server.login 命令通过生成的密码登录电子邮件。
  • 发送
  • 我们现在将使用 v=server.send_message 通过电子邮件发送消息。
  • 打印
  • 邮件发送成功后,我们会看到一条打印信息,Email has been sent successfully。

示例代码:

import smtplib
from email.message import EmailMessage
EMAIL_ADDRESS = "iqraanwar097@gmail.com"
EMAIL_PASSWORD = '***************'
email = EmailMessage()
email['Subject'] = input(str("Email Subject: "))
email['From'] = "Your Name"
email['To'] = 'abidork41@gmail.com'
email.set_content('Write Your message here')
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
server.send_message(email)
server.quit()
print("Email has been sent successfully")

输出:

Email Subject: Email sent using python
Email has been sent successfully

这就是我们如何向一个电子邮件地址发送电子邮件。 但是如果我们想向多个地址发送电子邮件,我们可以使用逗号分隔我们的电子邮件,并向我们想要的任意多个地址发送电子邮件。

示例代码:

import smtplib
from email.message import EmailMessage
EMAIL_ADDRESS = "abs@gmail.com"
EMAIL_PASSWORD = '*************'
email = EmailMessage()
email['Subject'] = input(str("Email Subject: "))
email['From'] = "Your Name"
email['To'] = 'abidork41@gmail.com,abidork41@gmail.com,abidork41@gmail.com'
email.set_content('Write Your message here')
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
server.send_message(email)
server.quit()
print("Email has been sent successfully to all the addresses")

输出:

Email Subject: I have a news for you all
Email has been sent successfully to all the addresses

我们的电子邮件会发送到所有提到的地址。

所以这让我们结束了讨论! 我们可以使用 Python 快速轻松地同时向多个人发送电子邮件,这只需要您编写几行代码。

我们希望您发现本文有助于理解如何使用 Python 将电子邮件发送到多个地址。

相关推荐

perl基础——循环控制_principle循环

在编程中,我们往往需要进行不同情况的判断,选择,重复操作。这些时候我们需要对简单语句来添加循环控制变量或者命令。if/unless我们需要在满足特定条件下再执行的语句,可以通过if/unle...

CHAPTER 2 The Antechamber of M de Treville 第二章 特雷维尔先生的前厅

CHAPTER1TheThreePresentsofD'ArtagnantheElderCHAPTER2TheAntechamber...

CHAPTER 5 The King'S Musketeers and the Cardinal'S Guards 第五章 国王的火枪手和红衣主教的卫士

CHAPTER3TheAudienceCHAPTER5TheKing'SMusketeersandtheCardinal'SGuard...

CHAPTER 3 The Audience 第三章 接见

CHAPTER3TheAudienceCHAPTER3TheAudience第三章接见M.DeTrévillewasatt...

别搞印象流!数据说明谁才是外线防守第一人!

来源:Reddit译者:@assholeeric编辑:伯伦WhoarethebestperimeterdefendersintheNBA?Here'sagraphofStea...

V-Day commemorations prove anti-China claims hollow

People'sLiberationArmyhonorguardstakepartinthemilitaryparademarkingthe80thanniversary...

EasyPoi使用_easypoi api

EasyPoi的主要特点:1.设计精巧,使用简单2.接口丰富,扩展简单3.默认值多,writelessdomore4.springmvc支持,web导出可以简单明了使用1.easypoi...

关于Oracle数据库12c 新特性总结_oracle数据库12514

概述今天主要简单介绍一下Oracle12c的一些新特性,仅供参考。参考:http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT...

【开发者成长】JAVA 线上故障排查完整套路!

线上故障主要会包括CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题...

使用 Python 向多个地址发送电子邮件

在本文中,我们将演示如何使用Python编程语言向使用不同电子邮件地址的不同收件人发送电子邮件。具体来说,我们将向许多不同的人发送电子邮件。使用Python向多个地址发送电子邮件Python...

提高工作效率的--Linux常用命令,能够决解95%以上的问题

点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf为什么要学习Linux命令?1、因为Li...

linux常用系统命令_linux操作系统常用命令

系统信息arch显示机器的处理器架构dmidecode-q显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hda罗列一个磁盘的架构特性hdparm-tT/dev/s...

小白入门必知必会-PostgreSQL-15.2源码编译安装

一PostgreSQL编译安装1.1下载源码包在PostgreSQL官方主页https://www.postgresql.org/ftp/source/下载区选择所需格式的源码包下载。cd/we...

Linux操作系统之常用命令_linux系统常用命令详解

Linux操作系统一、常用命令1.系统(1)系统信息arch显示机器的处理器架构uname-m显示机器的处理器架构uname-r显示正在使用的内核版本dmidecode-q显示硬件系...

linux网络命名空间简介_linux 网络相关命令

此篇会以例子的方式介绍下linux网络命名空间。此例中会创建两个networknamespace:nsa、nsb,一个网桥bridge0,nsa、nsb中添加网络设备veth,网络设备间...