使用Python发送电子邮件

        大家好,当我们需要迅速、方便地与他人沟通时,电子邮件是无疑是一种不可或缺的通信工具。无论是在个人生活中还是工作场合,电子邮件都是我们日常生活中的重要组成部分。它不仅能够传递文字信息,还可以发送附件、链接和嵌入式多媒体内容,从而满足了各种通信需求。

        随着技术的不断发展,许多任务和流程都变得自动化。在这种背景下,使用Python编写脚本来发送电子邮件变得越来越普遍。Python提供了强大的库,如smtplib和email,使得发送邮件变得异常简单,甚至可以集成到自动化任务或Web应用程序中。

        本文的目标是为大家提供一个简单易懂的教程,介绍如何使用Python发送电子邮件。将逐步引导了解如何准备工作、设置邮件内容、连接到SMTP服务器、发送邮件,并处理可能出现的错误。通过本文,读者将能够掌握发送电子邮件的基本技能,并了解一些关于保护邮件发送安全性的最佳实践。无论是作为Python初学者还是有一定经验的开发者,都能从本文中获得实用的知识,以便更好地利用Python发送电子邮件。

一、发送纯文本邮件

以下是详细介绍如何使用Python发送纯文本邮件的步骤,包括代码示例和对每一步的解释:

1、导入必要的库

        首先,导入Python的smtplib和email库。smtplib库提供了与SMTP服务器通信的功能,而email库用于构建邮件消息。

import smtplib
from email.mime.text import MIMEText

2、设置发件人、收件人和邮件内容

创建一个MIMEText对象来表示邮件的文本内容,并设置发件人、收件人和主题。

# 邮件内容
message = MIMEText("这是一封纯文本邮件。")# 发件人
message["From"] = "sender@example.com"# 收件人
message["To"] = "recipient@example.com"# 主题
message["Subject"] = "纯文本邮件示例"

3、连接到SMTP服务器并发送邮件

使用smtplib库连接到SMTP服务器,并使用登录凭据发送邮件。

# SMTP服务器地址和端口号
smtp_server = "smtp.example.com"
smtp_port = 587  # 假设使用的是TLS加密,端口号为587# 发件人邮箱登录凭据
username = "sender@example.com"
password = "your_password"# 连接到SMTP服务器
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()  # 开启TLS加密# 登录邮箱账号
server.login(username, password)# 发送邮件
server.sendmail(username, ["recipient@example.com"], message.as_string())# 关闭连接
server.quit()

解释:

  • 在第2步中,我们创建了一个MIMEText对象来表示纯文本邮件的内容。这个对象接受邮件的正文作为参数。
  • 我们设置了发件人、收件人和主题,分别通过message的["From"]、["To"]和["Subject"]属性实现。
  • 在第3步中,我们连接到SMTP服务器并登录邮箱账号。我们使用starttls()方法开启TLS加密,以确保邮件传输的安全性。
  • 最后,我们使用sendmail()方法将邮件发送给收件人,并通过quit()方法关闭与SMTP服务器的连接。

4、示例

下面是一个完整的示例代码,演示如何使用Python发送纯文本邮件:

import smtplib
from email.mime.text import MIMETextdef send_plain_text_email(sender_email, sender_password, recipient_email, subject, body):# 创建邮件内容message = MIMEText(body)message["From"] = sender_emailmessage["To"] = recipient_emailmessage["Subject"] = subject# 设置SMTP服务器信息smtp_server = "smtp.example.com"smtp_port = 587  # 假设使用的是TLS加密,端口号为587try:# 连接到SMTP服务器server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()  # 开启TLS加密# 登录邮箱账号server.login(sender_email, sender_password)# 发送邮件server.sendmail(sender_email, [recipient_email], message.as_string())print("邮件发送成功!")except Exception as e:print("邮件发送失败:", e)finally:# 关闭连接server.quit()# 输入发件人邮箱地址、密码、收件人邮箱地址、主题和邮件内容
sender_email = "sender@example.com"
sender_password = "your_password"
recipient_email = "recipient@example.com"
subject = "纯文本邮件示例"
body = "这是一封纯文本邮件。"# 发送邮件
send_plain_text_email(sender_email, sender_password, recipient_email, subject, body)

在这个示例中,需要替换以下变量的值:

  • sender_email: 发件人的邮箱地址。
  • sender_password: 发件人的邮箱密码。
  • recipient_email: 收件人的邮箱地址。
  • smtp_server: 发件人邮箱所属的SMTP服务器地址。
  • smtp_port: SMTP服务器的端口号,通常为587(假设使用TLS加密)。
  • subject: 邮件的主题。
  • body: 邮件的正文内容。

二、发送HTML邮件

        发送HTML格式的邮件可以让邮件的内容更具有吸引力和可读性,因为它允许使用各种格式的文本、图像、链接和样式。

以下是详细介绍如何使用Python发送带有HTML格式的邮件的步骤,以及讨论HTML邮件的优点和用例:

1、导入必要的库

        首先,导入Python的smtplib和email库。smtplib库提供了与SMTP服务器通信的功能,而email库用于构建邮件消息。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

2、设置发件人、收件人和邮件内容

        创建一个MIMEMultipart对象来表示邮件消息的多部分内容,其中一部分是HTML格式的文本。设置发件人、收件人和主题。

# 创建邮件消息对象
message = MIMEMultipart()# 邮件正文(HTML格式)
html_body = """
<html>
<head></head>
<body>
<h1>这是一封HTML格式的邮件</h1>
<p>这是一段<b>加粗</b>的文本。</p>
<p>这是一个<a href="https://www.example.com">链接</a>。</p>
</body>
</html>
"""# 将HTML内容添加到邮件消息中
message.attach(MIMEText(html_body, "html"))# 发件人
message["From"] = "sender@example.com"# 收件人
message["To"] = "recipient@example.com"# 主题
message["Subject"] = "HTML邮件示例"

3、连接到SMTP服务器并发送邮件

使用smtplib库连接到SMTP服务器,并使用登录凭据发送邮件。

# SMTP服务器地址和端口号
smtp_server = "smtp.example.com"
smtp_port = 587  # 假设使用的是TLS加密,端口号为587# 发件人邮箱登录凭据
username = "sender@example.com"
password = "your_password"try:# 连接到SMTP服务器server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()  # 开启TLS加密# 登录邮箱账号server.login(username, password)# 发送邮件server.sendmail(username, ["recipient@example.com"], message.as_string())print("邮件发送成功!")
except Exception as e:print("邮件发送失败:", e)
finally:# 关闭连接server.quit()

4、示例

下面是一个完整的示例代码,演示如何使用Python发送带有HTML格式的邮件:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMETextdef send_html_email(sender_email, sender_password, recipient_email, subject, html_body):# 创建邮件消息对象message = MIMEMultipart()# 邮件正文(HTML格式)message.attach(MIMEText(html_body, "html"))# 发件人message["From"] = sender_email# 收件人message["To"] = recipient_email# 主题message["Subject"] = subject# 设置SMTP服务器信息smtp_server = "smtp.example.com"smtp_port = 587  # 假设使用的是TLS加密,端口号为587try:# 连接到SMTP服务器server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()  # 开启TLS加密# 登录邮箱账号server.login(sender_email, sender_password)# 发送邮件server.sendmail(sender_email, [recipient_email], message.as_string())print("邮件发送成功!")except Exception as e:print("邮件发送失败:", e)finally:# 关闭连接server.quit()# 输入发件人邮箱地址、密码、收件人邮箱地址、主题和HTML邮件内容
sender_email = "sender@example.com"
sender_password = "your_password"
recipient_email = "recipient@example.com"
subject = "HTML邮件示例"
html_body = """
<html>
<head></head>
<body>
<h1>这是一封HTML格式的邮件</h1>
<p>这是一段<b>加粗</b>的文本。</p>
<p>这是一个<a href="https://www.example.com">链接</a>。</p>
</body>
</html>
"""# 发送HTML邮件
send_html_email(sender_email, sender_password, recipient_email, subject, html_body)

在这个示例中,需要替换以下变量的值:

  • sender_email: 发件人的邮箱地址。
  • sender_password: 发件人的邮箱密码。
  • recipient_email: 收件人的邮箱地址。
  • smtp_server: 发件人邮箱所属的SMTP服务器地址。
  • smtp_port: SMTP服务器的端口号,通常为587(假设使用TLS加密)。
  • subject: 邮件的主题。
  • html_body: 邮件的HTML格式内容。

三、发送带附件的邮件

        发送带附件的邮件是非常常见的需求,它允许你在邮件中包含文档、图片、PDF文件等附件。以下是详细介绍如何使用Python发送包含附件的邮件的步骤,以及演示如何添加文本、图像或其他文件作为附件的示例代码:

1、导入必要的库

        首先,导入Python的smtplib和email库。smtplib库提供了与SMTP服务器通信的功能,而email库用于构建邮件消息。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication

2、设置发件人、收件人和邮件内容

        创建一个MIMEMultipart对象来表示邮件消息的多部分内容。设置发件人、收件人和主题。添加文本或HTML格式的正文。

# 创建邮件消息对象
message = MIMEMultipart()# 邮件正文
text_body = "这是一封带附件的邮件。"
message.attach(MIMEText(text_body, "plain"))# 发件人
message["From"] = "sender@example.com"# 收件人
message["To"] = "recipient@example.com"# 主题
message["Subject"] = "带附件的邮件示例"

3、添加附件

        为了添加附件,需要使用MIMEApplication(对于二进制文件)或MIMEImage(对于图片文件)等MIME子类,并将附件内容读取并添加到消息中。

# 添加文本文件附件
text_attachment = MIMEApplication(open("document.txt", "rb").read())
text_attachment.add_header('Content-Disposition', 'attachment', filename="document.txt")
message.attach(text_attachment)# 添加图片文件附件
image_attachment = MIMEImage(open("image.jpg", "rb").read())
image_attachment.add_header('Content-Disposition', 'attachment', filename="image.jpg")
message.attach(image_attachment)

4、连接到SMTP服务器并发送邮件

使用smtplib库连接到SMTP服务器,并使用登录凭据发送邮件。

# 设置SMTP服务器信息
smtp_server = "smtp.example.com"
smtp_port = 587  # 假设使用的是TLS加密,端口号为587# 发件人邮箱登录凭据
username = "sender@example.com"
password = "your_password"try:# 连接到SMTP服务器server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()  # 开启TLS加密# 登录邮箱账号server.login(username, password)# 发送邮件server.sendmail(username, ["recipient@example.com"], message.as_string())print("邮件发送成功!")
except Exception as e:print("邮件发送失败:", e)
finally:# 关闭连接server.quit()

5、示例

下面是一个完整的示例代码,演示如何使用Python发送带有附件的邮件:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplicationdef send_email_with_attachment(sender_email, sender_password, recipient_email, subject, body, attachment_paths):# 创建邮件消息对象message = MIMEMultipart()# 邮件正文message.attach(MIMEText(body, "plain"))# 添加附件for attachment_path in attachment_paths:attachment = create_attachment(attachment_path)message.attach(attachment)# 发件人message["From"] = sender_email# 收件人message["To"] = recipient_email# 主题message["Subject"] = subject# 设置SMTP服务器信息smtp_server = "smtp.example.com"smtp_port = 587  # 假设使用的是TLS加密,端口号为587try:# 连接到SMTP服务器server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()  # 开启TLS加密# 登录邮箱账号server.login(sender_email, sender_password)# 发送邮件server.sendmail(sender_email, [recipient_email], message.as_string())print("邮件发送成功!")except Exception as e:print("邮件发送失败:", e)finally:# 关闭连接server.quit()def create_attachment(file_path):# 获取文件名和文件扩展名filename = file_path.split("/")[-1]file_extension = filename.split(".")[-1]# 根据文件扩展名选择合适的MIME类型if file_extension.lower() == "txt":attachment = MIMEText(open(file_path, "rb").read())elif file_extension.lower() in ["jpg", "jpeg", "png", "gif"]:attachment = MIMEImage(open(file_path, "rb").read())else:attachment = MIMEApplication(open(file_path, "rb").read())# 添加文件名到附件的头部attachment.add_header('Content-Disposition', 'attachment', filename=filename)return attachment# 输入发件人邮箱地址、密码、收件人邮箱地址、主题、正文和附件路径
sender_email = "sender@example.com"
sender_password = "your_password"
recipient_email = "recipient@example.com"
subject = "带附件的邮件示例"
body = "这是一封带附件的邮件。请查收附件。"
attachment_paths = ["document.txt", "image.jpg"]# 发送带附件的邮件
send_email_with_attachment(sender_email, sender_password, recipient_email, subject, body, attachment_paths)

在这个示例中,需要替换以下变量的值:

  • sender_email: 发件人的邮箱地址。
  • sender_password: 发件人的邮箱密码。
  • recipient_email: 收件人的邮箱地址。
  • subject: 邮件的主题。
  • body: 邮件的正文内容。
  • attachment_paths: 包含要添加为附件的文件的路径列表。

四、发送带图片嵌入的邮件

        在邮件中嵌入图片可以使邮件内容更加生动,例如创建富文本签名、发送图文并茂的内容等。以下是详细介绍如何在邮件中嵌入图片的步骤,以及讨论嵌入图片的用途:

1、导入必要的库

        首先,导入Python的smtplib和email库。smtplib库提供了与SMTP服务器通信的功能,而email库用于构建邮件消息。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

2、设置发件人、收件人和邮件内容

        创建一个MIMEMultipart对象来表示邮件消息的多部分内容。设置发件人、收件人和主题。添加文本或HTML格式的正文。

# 创建邮件消息对象
message = MIMEMultipart()# 邮件正文(HTML格式)
html_body = """
<html>
<head></head>
<body>
<h1>这是一封带图片的邮件</h1>
<p>以下是嵌入的图片:</p>
<img src="cid:image1" alt="image">
</body>
</html>
"""# 将HTML内容添加到邮件消息中
message.attach(MIMEText(html_body, "html"))# 发件人
message["From"] = "sender@example.com"# 收件人
message["To"] = "recipient@example.com"# 主题
message["Subject"] = "带图片嵌入的邮件示例"

3、添加嵌入的图片

        使用MIMEImage类将图片文件加载到消息中,并为每个嵌入的图片指定一个唯一的CID(Content-ID),以便在HTML内容中引用。

# 添加嵌入的图片
with open("image.jpg", "rb") as img_file:image = MIMEImage(img_file.read())image.add_header('Content-ID', '<image1>')message.attach(image)

4、连接到SMTP服务器并发送邮件

使用smtplib库连接到SMTP服务器,并使用登录凭据发送邮件。

# 设置SMTP服务器信息
smtp_server = "smtp.example.com"
smtp_port = 587  # 假设使用的是TLS加密,端口号为587# 发件人邮箱登录凭据
username = "sender@example.com"
password = "your_password"try:# 连接到SMTP服务器server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()  # 开启TLS加密# 登录邮箱账号server.login(username, password)# 发送邮件server.sendmail(username, ["recipient@example.com"], message.as_string())print("邮件发送成功!")
except Exception as e:print("邮件发送失败:", e)
finally:# 关闭连接server.quit()

5、示例

下面是一个完整的示例代码,演示如何使用Python发送带有嵌入图片的邮件:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImagedef send_email_with_embedded_image(sender_email, sender_password, recipient_email, subject, html_body, image_path):# 创建邮件消息对象message = MIMEMultipart()# 邮件正文(HTML格式)message.attach(MIMEText(html_body, "html"))# 添加嵌入的图片with open(image_path, "rb") as img_file:image = MIMEImage(img_file.read())image.add_header('Content-ID', '<image1>')message.attach(image)# 发件人message["From"] = sender_email# 收件人message["To"] = recipient_email# 主题message["Subject"] = subject# 设置SMTP服务器信息smtp_server = "smtp.example.com"smtp_port = 587  # 假设使用的是TLS加密,端口号为587try:# 连接到SMTP服务器server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()  # 开启TLS加密# 登录邮箱账号server.login(sender_email, sender_password)# 发送邮件server.sendmail(sender_email, [recipient_email], message.as_string())print("邮件发送成功!")except Exception as e:print("邮件发送失败:", e)finally:# 关闭连接server.quit()# 输入发件人邮箱地址、密码、收件人邮箱地址、主题、HTML邮件内容和图片路径
sender_email = "sender@example.com"
sender_password = "your_password"
recipient_email = "recipient@example.com"
subject = "带图片嵌入的邮件示例"
html_body = """
<html>
<head></head>
<body>
<h1>这是一封带图片的邮件</h1>
<p>以下是嵌入的图片:</p>
<img src="cid:image1" alt="image">
</body>
</html>
"""
image_path = "image.jpg"# 发送带图片嵌入的邮件
send_email_with_embedded_image(sender_email, sender_password, recipient_email, subject, html_body, image_path)

在这个示例中,需要替换以下变量的值:

  • sender_email: 发件人的邮箱地址。
  • sender_password: 发件人的邮箱密码。
  • recipient_email: 收件人的邮箱地址。
  • subject: 邮件的主题。
  • html_body: 邮件的HTML格式内容,其中的<img>标签使用了CID(Content-ID)来引用嵌入的图片。
  • image_path: 要嵌入的图片文件的路径。

五、发送带样式的邮件

        发送带样式的邮件可以使邮件内容更加美观和吸引人。在HTML邮件中使用CSS样式可以控制文本的字体、颜色、大小,设置背景色、边框等,从而实现更丰富的邮件内容样式。

        以下是详细介绍如何在HTML邮件中使用CSS样式的步骤,以及演示如何美化邮件内容的示例代码:

1、创建HTML邮件内容

        首先,构建HTML格式的邮件内容,包括所需的文本、图片和其他元素。在HTML中使用<style>标签添加CSS样式。

<!DOCTYPE html>
<html>
<head>
<style>
/* CSS样式 */
body {font-family: Arial, sans-serif;background-color: #f2f2f2;padding: 20px;
}h1 {color: #333;text-align: center;
}p {color: #666;font-size: 16px;
}.img-container {text-align: center;
}img {width: 300px;border-radius: 10px;
}
</style>
</head>
<body><h1>这是一封带样式的邮件</h1>
<p>这是一段带有样式的文本。</p>
<div class="img-container"><img src="cid:image1" alt="image">
</div></body>
</html>

2、创建邮件消息对象并添加内容

使用Python的email库创建邮件消息对象,并将HTML内容添加到邮件中。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImagedef send_styled_email(sender_email, sender_password, recipient_email, subject, html_content, image_path):# 创建邮件消息对象message = MIMEMultipart()# 邮件正文(HTML格式)message.attach(MIMEText(html_content, "html"))# 添加嵌入的图片with open(image_path, "rb") as img_file:image = MIMEImage(img_file.read())image.add_header('Content-ID', '<image1>')message.attach(image)# 发件人message["From"] = sender_email# 收件人message["To"] = recipient_email# 主题message["Subject"] = subject# 设置SMTP服务器信息smtp_server = "smtp.example.com"smtp_port = 587  # 假设使用的是TLS加密,端口号为587try:# 连接到SMTP服务器server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()  # 开启TLS加密# 登录邮箱账号server.login(sender_email, sender_password)# 发送邮件server.sendmail(sender_email, [recipient_email], message.as_string())print("邮件发送成功!")except Exception as e:print("邮件发送失败:", e)finally:# 关闭连接server.quit()# 输入发件人邮箱地址、密码、收件人邮箱地址、主题、HTML邮件内容和图片路径
sender_email = "sender@example.com"
sender_password = "your_password"
recipient_email = "recipient@example.com"
subject = "带样式的邮件示例"
html_content = """<!DOCTYPE html>
<html>
<head>
<style>
/* CSS样式 */
body {font-family: Arial, sans-serif;background-color: #f2f2f2;padding: 20px;
}h1 {color: #333;text-align: center;
}p {color: #666;font-size: 16px;
}.img-container {text-align: center;
}img {width: 300px;border-radius: 10px;
}
</style>
</head>
<body><h1>这是一封带样式的邮件</h1>
<p>这是一段带有样式的文本。</p>
<div class="img-container"><img src="cid:image1" alt="image">
</div></body>
</html>"""
image_path = "image.jpg"# 发送带样式的邮件
send_styled_email(sender_email, sender_password, recipient_email, subject, html_content, image_path)

六、发送带链接的邮件

        在邮件中添加链接可以使邮件更具交互性和实用性,例如发送通知邮件时可以提供查看更多信息的链接,或者发送订阅确认邮件时可以包含确认订阅的链接。

以下是详细介绍如何在邮件中添加链接的步骤,以及提供了实际用例和示例代码:

1、创建邮件内容

首先,构建邮件的HTML内容,并在需要添加链接的地方使用<a>标签添加链接。

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>这是一封带链接的邮件</h1>
<p>点击以下链接查看更多信息:</p>
<a href="https://www.example.com">点击这里</a>。
</body>
</html>

2、创建邮件消息对象并添加内容

使用Python的email库创建邮件消息对象,并将HTML内容添加到邮件中。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMETextdef send_email_with_link(sender_email, sender_password, recipient_email, subject, html_content):# 创建邮件消息对象message = MIMEMultipart()# 邮件正文(HTML格式)message.attach(MIMEText(html_content, "html"))# 发件人message["From"] = sender_email# 收件人message["To"] = recipient_email# 主题message["Subject"] = subject# 设置SMTP服务器信息smtp_server = "smtp.example.com"smtp_port = 587  # 假设使用的是TLS加密,端口号为587try:# 连接到SMTP服务器server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()  # 开启TLS加密# 登录邮箱账号server.login(sender_email, sender_password)# 发送邮件server.sendmail(sender_email, [recipient_email], message.as_string())print("邮件发送成功!")except Exception as e:print("邮件发送失败:", e)finally:# 关闭连接server.quit()# 输入发件人邮箱地址、密码、收件人邮箱地址、主题和HTML邮件内容
sender_email = "sender@example.com"
sender_password = "your_password"
recipient_email = "recipient@example.com"
subject = "带链接的邮件示例"
html_content = """<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>这是一封带链接的邮件</h1>
<p>点击以下链接查看更多信息:</p>
<a href="https://www.example.com">点击这里</a>。
</body>
</html>"""# 发送带链接的邮件
send_email_with_link(sender_email, sender_password, recipient_email, subject, html_content)

七、发送群发邮件

        发送群发邮件是一种常见的需求,它允许你一次性向多个收件人发送相同的邮件内容。以下是详细介绍如何使用Python发送群发邮件的步骤,以及提供了示例代码:

1、准备邮件内容

        首先,准备好要发送的邮件内容,包括主题、正文等。在邮件内容中,可以使用{name}等占位符来个性化地填充收件人的信息。

subject = "关于XXX活动的通知"
body = "尊敬的{name}先生/女士,您好,我们诚挚邀请您参加我们举办的XXX活动。"

2、准备收件人列表

创建一个收件人列表,包含所有要发送邮件的收件人邮箱地址。

recipients = [{"name": "张三", "email": "zhangsan@example.com"},{"name": "李四", "email": "lisi@example.com"},{"name": "王五", "email": "wangwu@example.com"},# 添加更多收件人...
]

3、创建邮件消息对象并发送邮件

使用Python的smtplib库连接到SMTP服务器,并循环发送邮件给每个收件人。

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartdef send_group_email(sender_email, sender_password, subject, body, recipients):smtp_server = "smtp.example.com"smtp_port = 587  # 使用TLS加密的端口号try:# 连接到SMTP服务器server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()  # 开启TLS加密# 登录邮箱账号server.login(sender_email, sender_password)for recipient in recipients:# 创建邮件消息对象message = MIMEMultipart()message["From"] = sender_emailmessage["To"] = recipient["email"]message["Subject"] = subject# 填充邮件内容personalized_body = body.format(name=recipient["name"])message.attach(MIMEText(personalized_body, "plain"))# 发送邮件server.sendmail(sender_email, recipient["email"], message.as_string())print(f"邮件发送给 {recipient['name']} ({recipient['email']}) 成功!")print("群发邮件完成!")except Exception as e:print("群发邮件失败:", e)finally:# 关闭连接server.quit()# 输入发件人邮箱地址、密码、主题、正文和收件人列表
sender_email = "your_email@example.com"
sender_password = "your_password"
subject = "关于XXX活动的通知"
body = "尊敬的{name}先生/女士,您好,我们诚挚邀请您参加我们举办的XXX活动。"
recipients = [{"name": "张三", "email": "zhangsan@example.com"},{"name": "李四", "email": "lisi@example.com"},{"name": "王五", "email": "wangwu@example.com"},# 添加更多收件人...
]# 发送群发邮件
send_group_email(sender_email, sender_password, subject, body, recipients)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/334952.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将音频中的人声分离出来?

想要把一段视频中的人声跟背景音乐分离开来&#xff0c;找个好一点的音频处理软件就能把声音分离了&#xff0c;常见的有以下方法&#xff0c;一起来看看吧。 pr 打开软件&#xff0c;然后将电脑上的音频文件&#xff0c;上传到软件中&#xff0c;然后按住[ctrla]选择所有音频…

Android 布局中@NULL的使用和代码实现方式详解

文章目录 1、使用场景2、示例代码实现2.1、移除背景2.2 、移除文本2.3、移除布局宽度或高度2.4、移除提示文本2.5、移除图像资源 3、综合示例3.1、布局文件 activity_main.xml3.2、主活动文件 MainActivity.java3.4、资源文件3.5、运行结果 4、优点5、缺点6、综合分析6.1、适用…

若依启动run-modules-system.bat报错问题解决方案

在启动run-modules-system.bat时遇到了一些问题,在网上搜索无果后,排查解决完毕 1.启动nacos时,报错如下 Error creating bean with name grpcClusterServer: Invocation of init method failed; nested exception is java.io.IOException: Failed to bind to address 0.0.0.0…

AlexNet神经网络训练

导包 import tensorflow as tffrom tensorflow.keras import datasets, layers, models 加载Fashion-MNIST数据集 (train_images, train_labels), (test_images, test_labels) datasets.fashion_mnist.load_data() 归一化像素值到[0, 1]区间 train_images, test_images t…

齿轮常见故障学习笔记

大家好&#xff0c;这期咱们聊一聊齿轮常见的失效形式&#xff0c;查阅了相关的资料&#xff0c;做个笔记分享给大家&#xff0c;共同学习。 介绍 齿轮故障可能以多种方式发生。如果在设计阶段本身就尽量防止这些故障的产生&#xff0c;则可以产生改更为优化的齿轮设计。齿轮…

Burnout Drift Multiplayer(多人赛车游戏模板)

Burnout Drift Multiplayer是一个完整的项目,已在PC、Android、iOS和WebGL上发布的Burnout Drift系列中使用。 [包括最新版本的Realistic Car Controller Pro] PC、WebGL和Android演示 包括Burnout Drift系列的所有功能。您只需几分钟即可轻松添加自己的车辆、场景和配乐。 警…

【Python】【Scrapy 爬虫】理解HTML和XPath

为了从网页中抽取信息&#xff0c;必须对其结构有更多了解。我们快速浏览HTML、HTML的树状表示&#xff0c;以及在网页上选取信息的一种方式XPath。 HTML、DOM树表示以及XPath 互联网是如何工作的&#xff1f; 当两台电脑需要通信的时候&#xff0c;你必须要连接他们&#xff…

NFT Insider #131:Mocaverse NFT市值破3.5万ETH,The Sandbox 参加NFCsummit

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members&#xff08;https://twitter.com/WHALEMembers&#xff09;、BeepCrypto &#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、…

【LLM第7篇】transformer跟bert、gpt、大模型的联系

上一篇讲了transformer的原理&#xff0c;接下来&#xff0c;看看它的衍生物们。 Transformer基本架构 Transformer模型主要由两部分组成&#xff1a;编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;。编码器负责处理输入序列&#xff0c;将其…

linux解压.zip文件命令详解

在Linux中解压.zip文件&#xff0c;你可以使用unzip命令。如果你的系统中没有安装unzip&#xff0c;你可以使用包管理器来安装它。 Debian的系统&#xff08;Ubuntu&#xff09;&#xff0c;安装命令&#xff1a; sudo apt-get install unzip基于Red Hat的系统&#xff08;如…

STM32-11-电容触摸按键

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32电容触摸按键 电容触摸按键原理&#xff1a; 无手指触摸&#xff1a;上电时&…

Pytorch环境配置2.0.1+ Cuda11.7

查找cuda、cudnn、Pytorch(GPU)及cuda和NVIDIA显卡驱动对应关系 查询可支持的最高cuda版本 nvidia-smi查看支持的cuda的版本 CUDA版本对应表 我的显卡驱动是Driver Version&#xff1a;535.40.&#xff0c;那么左边对应的CUDA都可以兼容 右上角为CUDA 版本&#xff0c;可以看…

Linux 防火墙 firewalld 常用命令

1 防火墙 - firewalld 1.1 开启防火墙 # 临时性开启&#xff0c;服务器重启后会恢复为原来的状态 systemctl start firewalld # 永久性开启&#xff08;即开机启动&#xff09;&#xff0c;重启服务器后生效 systemctl enable firewalld1.2 关闭防火墙 # 临时性关闭&#xf…

基于ViutualBox+Ubuntu(Linux)的开发环境搭建

实际在选择虚拟机的时候纠结了要用virualbox还是vmware&#xff0c;初步比较结果&#xff1a; 1.virualbox能够使用vmware的硬盘格式&#xff0c;因此可以自由选择。 2.都能够实现主机和宿主机之间的文件夹共享。 3.virualbox是自由软件&#xff0c;vmware是商业软件。 在功能上…

LuatOS学习

开发顺序 Lua是脚本语言中运行速度最快的语言 资源占用极低 脚本语言运行方式 脚本语言是从上往下一行一行运行的 变量 coun 123456 a,b,c 1,2,3交换 a,b b,a在测试环境中&#xff0c;用print(a,b)打印 nil类型 未声明的变量就是nil&#xff0c;nil用来表示此变量为空…

5G工厂长啥样

5G工厂是一种新型的工业互联网基础设施&#xff0c;利用5G为代表的新一代信息通信技术集成&#xff0c;打造新型工业互联网基础设施。在5G工厂中&#xff0c;自动化和智能化设备广泛使用&#xff0c;高度互联的工厂网络得以实现&#xff0c;远程监控和管理成为可能&#xff0c;…

学习笔记——动态路由协议——OSPF(OSPF网络类型2)

2、OSPF网络类型 常见链路层协议对应的默认网络类型 网络类型 描述 常见链路层协议 Hello报文间隔 报文类型 有无DR、BDR选举 P2P 点对点网络 HDLC、PPP、LAPB 10s 以组播方式发送OSPF报文 有 P2MP 点对多点网络 无 30s 以组播方式发送Hello报文&#xff0c;单…

春秋云境CVE-2018-20604

简介 雷风影视CMS是一款采用PHP基于THINKPHP3.2.3框架开发&#xff0c;适合各类视频、影视网站的影视内容管理程序&#xff0c;该CMS存在缺陷&#xff0c;可以通过 admin.php?s/Template/edit/path/*web*..*..*..*..*1.txt 的方式读取任意文件。 正文 1.进入靶场 2./admin…

移动应用程序设计详解:基本概念和原理

移动应用程序设计是什么&#xff1f; 一般来说&#xff0c;应用程序设计师的核心职责是让用户有体验应用的欲望&#xff0c;而开发者负责让它正常工作。移动应用程序设计包括用户界面 (UI) 和用户体验 (UX)。设计者负责应用程序的整体风格&#xff0c;包括配色方案、字体选择、…

c语言游戏实战(3):三子棋

前言&#xff1a; 三子棋是一种民间传统游戏&#xff0c;又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏规则是双方对战&#xff0c;双方依次在9宫格棋盘上摆放棋子&#xff0c;率先将自己的三个棋子走成一条线就视为胜利。但因棋盘太小&#xff0c;三子棋在很多时候会出现和…