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

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

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

在本文中,我们将演示如何使用 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 将电子邮件发送到多个地址。

相关推荐

Python入门学习记录之一:变量_python怎么用变量

写这个,主要是对自己学习python知识的一个总结,也是加深自己的印象。变量(英文:variable),也叫标识符。在python中,变量的命名规则有以下三点:>变量名只能包含字母、数字和下划线...

python变量命名规则——来自小白的总结

python是一个动态编译类编程语言,所以程序在运行前不需要如C语言的先行编译动作,因此也只有在程序运行过程中才能发现程序的问题。基于此,python的变量就有一定的命名规范。python作为当前热门...

Python入门学习教程:第 2 章 变量与数据类型

2.1什么是变量?在编程中,变量就像一个存放数据的容器,它可以存储各种信息,并且这些信息可以被读取和修改。想象一下,变量就如同我们生活中的盒子,你可以把东西放进去,也可以随时拿出来看看,甚至可以换成...

绘制学术论文中的“三线表”具体指导

在科研过程中,大家用到最多的可能就是“三线表”。“三线表”,一般主要由三条横线构成,当然在变量名栏里也可以拆分单元格,出现更多的线。更重要的是,“三线表”也是一种数据记录规范,以“三线表”形式记录的数...

Python基础语法知识--变量和数据类型

学习Python中的变量和数据类型至关重要,因为它们构成了Python编程的基石。以下是帮助您了解Python中的变量和数据类型的分步指南:1.变量:变量在Python中用于存储数据值。它们充...

一文搞懂 Python 中的所有标点符号

反引号`无任何作用。传说Python3中它被移除是因为和单引号字符'太相似。波浪号~(按位取反符号)~被称为取反或补码运算符。它放在我们想要取反的对象前面。如果放在一个整数n...

Python变量类型和运算符_python中变量的含义

别再被小名词坑哭了:Python新手常犯的那些隐蔽错误,我用同事的真实bug拆给你看我记得有一次和同事张姐一起追查一个看似随机崩溃的脚本,最后发现罪魁祸首竟然是她把变量命名成了list。说实话...

从零开始:深入剖析 Spring Boot3 中配置文件的加载顺序

在当今的互联网软件开发领域,SpringBoot无疑是最为热门和广泛应用的框架之一。它以其强大的功能、便捷的开发体验,极大地提升了开发效率,成为众多开发者构建Web应用程序的首选。而在Spr...

Python中下划线 ‘_’ 的用法,你知道几种

Python中下划线()是一个有特殊含义和用途的符号,它可以用来表示以下几种情况:1在解释器中,下划线(_)表示上一个表达式的值,可以用来进行快速计算或测试。例如:>>>2+...

解锁Shell编程:变量_shell $变量

引言:开启Shell编程大门Shell作为用户与Linux内核之间的桥梁,为我们提供了强大的命令行交互方式。它不仅能执行简单的文件操作、进程管理,还能通过编写脚本实现复杂的自动化任务。无论是...

一文学会Python的变量命名规则!_python的变量命名有哪些要求

目录1.变量的命名原则3.内置函数尽量不要做变量4.删除变量和垃圾回收机制5.结语1.变量的命名原则①由英文字母、_(下划线)、或中文开头②变量名称只能由英文字母、数字、下画线或中文字所组成。③英文字...

更可靠的Rust-语法篇-区分语句/表达式,略览if/loop/while/for

src/main.rs://函数定义fnadd(a:i32,b:i32)->i32{a+b//末尾表达式}fnmain(){leta:i3...

C++第五课:变量的命名规则_c++中变量的命名规则

变量的命名不是想怎么起就怎么起的,而是有一套固定的规则的。具体规则:1.名字要合法:变量名必须是由字母、数字或下划线组成。例如:a,a1,a_1。2.开头不能是数字。例如:可以a1,但不能起1a。3....

Rust编程-核心篇-不安全编程_rust安全性

Unsafe的必要性Rust的所有权系统和类型系统为我们提供了强大的安全保障,但在某些情况下,我们需要突破这些限制来:与C代码交互实现底层系统编程优化性能关键代码实现某些编译器无法验证的安全操作Rus...

探秘 Python 内存管理:背后的神奇机制

在编程的世界里,内存管理就如同幕后的精密操控者,确保程序的高效运行。Python作为一种广泛使用的编程语言,其内存管理机制既巧妙又复杂,为开发者们提供了便利的同时,也展现了强大的底层控制能力。一、P...