大家好,当我们需要迅速、方便地与他人沟通时,电子邮件是无疑是一种不可或缺的通信工具。无论是在个人生活中还是工作场合,电子邮件都是我们日常生活中的重要组成部分。它不仅能够传递文字信息,还可以发送附件、链接和嵌入式多媒体内容,从而满足了各种通信需求。
随着技术的不断发展,许多任务和流程都变得自动化。在这种背景下,使用Python编写脚本来发送电子邮件变得越来越普遍。Python提供了强大的库,如smtplib和email,使得发送邮件变得异常简单,甚至可以集成到自动化任务或Web应用程序中。
本文的目标是为大家提供一个简单易懂的教程,介绍如何使用Python发送电子邮件。将逐步引导了解如何准备工作、设置邮件内容、连接到SMTP服务器、发送邮件,并处理可能出现的错误。通过本文,读者将能够掌握发送电子邮件的基本技能,并了解一些关于保护邮件发送安全性的最佳实践。无论是作为Python初学者还是有一定经验的开发者,都能从本文中获得实用的知识,以便更好地利用Python发送电子邮件。
一、发送纯文本邮件
以下是详细介绍如何使用Python发送纯文本邮件的步骤,包括代码示例和对每一步的解释:
1、导入必要的库
首先,导入Python的smtplib和email库。smtplib库提供了与SMTP服务器通信的功能,而email库用于构建邮件消息。
python
import smtplib
from email.mime.text import MIMEText
2、设置发件人、收件人和邮件内容
创建一个MIMEText对象来表示邮件的文本内容,并设置发件人、收件人和主题。
python
# 邮件内容
message = MIMEText("这是一封纯文本邮件。")
# 发件人
message["From"] = "sender@example.com"
# 收件人
message["To"] = "recipient@example.com"
# 主题
message["Subject"] = "纯文本邮件示例"
3、连接到SMTP服务器并发送邮件
使用smtplib库连接到SMTP服务器,并使用登录凭据发送邮件。
python
# 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发送纯文本邮件:
python
import smtplib
from email.mime.text import MIMEText
def send_plain_text_email(sender_email, sender_password, recipient_email, subject, body):
# 创建邮件内容
message = MIMEText(body)
message["From"] = sender_email
message["To"] = recipient_email
message["Subject"] = subject
# 设置SMTP服务器信息
smtp_server = "smtp.example.com"
smtp_port = 587 # 假设使用的是TLS加密,端口号为587
try:
# 连接到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库用于构建邮件消息。
python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
2、设置发件人、收件人和邮件内容
创建一个MIMEMultipart对象来表示邮件消息的多部分内容,其中一部分是HTML格式的文本。设置发件人、收件人和主题。
python
# 创建邮件消息对象
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服务器,并使用登录凭据发送邮件。
python
# 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格式的邮件:
python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def 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加密,端口号为587
try:
# 连接到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库用于构建邮件消息。
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 MIMEApplication
2、设置发件人、收件人和邮件内容
创建一个MIMEMultipart对象来表示邮件消息的多部分内容。设置发件人、收件人和主题。添加文本或HTML格式的正文。
python
# 创建邮件消息对象
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子类,并将附件内容读取并添加到消息中。
python
# 添加文本文件附件
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服务器,并使用登录凭据发送邮件。
python
# 设置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发送带有附件的邮件:
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 MIMEApplication
def 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加密,端口号为587
try:
# 连接到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库用于构建邮件消息。
python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
2、设置发件人、收件人和邮件内容
创建一个MIMEMultipart对象来表示邮件消息的多部分内容。设置发件人、收件人和主题。添加文本或HTML格式的正文。
python
# 创建邮件消息对象
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内容中引用。
python
# 添加嵌入的图片
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服务器,并使用登录凭据发送邮件。
python
# 设置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发送带有嵌入图片的邮件:
python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
def 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加密,端口号为587
try:
# 连接到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样式。
python
<!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内容添加到邮件中。
python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
def 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加密,端口号为587
try:
# 连接到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>
标签添加链接。
python
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>这是一封带链接的邮件</h1>
<p>点击以下链接查看更多信息:</p>
<a href="https://www.example.com">点击这里</a>。
</body>
</html>
2、创建邮件消息对象并添加内容
使用Python的email库创建邮件消息对象,并将HTML内容添加到邮件中。
python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def 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加密,端口号为587
try:
# 连接到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}
等占位符来个性化地填充收件人的信息。
python
subject = "关于XXX活动的通知"
body = "尊敬的{name}先生/女士,您好,我们诚挚邀请您参加我们举办的XXX活动。"
2、准备收件人列表
创建一个收件人列表,包含所有要发送邮件的收件人邮箱地址。
python
recipients = [
{"name": "张三", "email": "zhangsan@example.com"},
{"name": "李四", "email": "lisi@example.com"},
{"name": "王五", "email": "wangwu@example.com"},
# 添加更多收件人...
]
3、创建邮件消息对象并发送邮件
使用Python的smtplib库连接到SMTP服务器,并循环发送邮件给每个收件人。
python
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def 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_email
message["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)