Python 发送邮件附件:根据收件人名称匹配对应 Excel 文件
以下代码示例演示如何使用 Python 发送邮件附件,根据收件人名称从 Subtables 文件夹中匹配对应的 Excel 文件并作为附件发送:
import os
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
# 邮件服务器信息
sender = 'your_email@example.com'
sender_password = 'your_password'
smtp_server = 'smtp.example.com'
smtp_port = 587
# 收件人列表
receiverList = ['john.doe@example.com', 'jane.doe@example.com']
# 定义 Subtables 文件夹路径
subtables_path = '/path/to/Subtables/'
# 创建邮件对象
msg = MIMEMultipart()
msg['From'] = sender
msg['To'] = ', '.join(receiverList)
msg['Subject'] = '邮件主题'
# 邮件内容
content = '<p>邮件内容</p>'
puretext = MIMEText(content, 'html', 'utf-8')
msg.attach(puretext)
# 循环遍历收件人列表
for receiver in receiverList:
# 从邮箱地址中提取收件人姓名
receiver_name = receiver.split('@')[0]
# 构造 Excel 文件路径
excel_path = os.path.join(subtables_path, receiver_name + '.xlsx')
# 检查文件是否存在
if os.path.exists(excel_path):
# 读取文件内容并将其附加到邮件中
with open(excel_path, 'rb') as f:
excel_content = f.read()
excel_part = MIMEApplication(excel_content)
excel_part.add_header('Content-Disposition', 'attachment', filename=receiver_name + '.xlsx')
msg.attach(excel_part)
# 创建 SMTP 对象
smtpObj = smtplib.SMTP(smtp_server, smtp_port)
# 启动 TLS 安全连接
smtpObj.starttls()
# 登录邮件服务器
smtpObj.login(sender, sender_password)
# 发送邮件
smtpObj.sendmail(sender, receiverList, msg.as_string())
# 关闭 SMTP 连接
smtpObj.quit()
代码说明:
- 该代码首先定义了邮件服务器信息,包括发件人邮箱地址、密码、服务器地址和端口号。
- 然后定义了收件人列表,每个收件人地址都包含在列表中。
- 接下来定义了 Subtables 文件夹路径,该文件夹中包含所有收件人对应的 Excel 文件。
- 创建一个邮件对象,并设置邮件主题和内容。
- 循环遍历收件人列表,并根据每个收件人的邮箱地址提取其姓名。
- 构造 Excel 文件路径,并检查文件是否存在。
- 如果文件存在,则读取文件内容并将其附加到邮件中。
- 最后,创建 SMTP 对象,并使用发件人邮箱地址和密码登录邮件服务器。
- 使用
sendmail()方法发送邮件,并关闭 SMTP 连接。
注意:
- 该代码假设 Subtables 文件夹位于运行 Python 脚本的同一台机器上。如果文件夹位于远程服务器或其他机器上,则需要修改
subtables_path变量以反映正确的路径。 - 代码中的
receiver_name变量是从收件人邮箱地址中提取的,假设邮箱地址符合username@domain.com的格式。如果邮箱地址格式不同,则需要修改代码以提取正确的用户名。 - 该代码使用的是
smtplib模块,该模块可以用于发送电子邮件。如果您的环境中没有安装该模块,则需要使用pip install smtplib命令进行安装。
其他注意事项:
- 如果您使用的是 Gmail 邮箱,则需要在 Gmail 的账户设置中开启 '允许较不安全的应用程序访问你的帐户' 选项,才能使用
smtplib模块发送邮件。 - 在实际使用中,您可以根据需要修改代码中的参数,例如邮件主题、内容、附件路径等。
原文地址: https://www.cveoy.top/t/topic/oTzc 著作权归作者所有。请勿转载和采集!