以下代码示例演示如何使用 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()

代码说明:

  1. 该代码首先定义了邮件服务器信息,包括发件人邮箱地址、密码、服务器地址和端口号。
  2. 然后定义了收件人列表,每个收件人地址都包含在列表中。
  3. 接下来定义了 Subtables 文件夹路径,该文件夹中包含所有收件人对应的 Excel 文件。
  4. 创建一个邮件对象,并设置邮件主题和内容。
  5. 循环遍历收件人列表,并根据每个收件人的邮箱地址提取其姓名。
  6. 构造 Excel 文件路径,并检查文件是否存在。
  7. 如果文件存在,则读取文件内容并将其附加到邮件中。
  8. 最后,创建 SMTP 对象,并使用发件人邮箱地址和密码登录邮件服务器。
  9. 使用 sendmail() 方法发送邮件,并关闭 SMTP 连接。

注意:

  • 该代码假设 Subtables 文件夹位于运行 Python 脚本的同一台机器上。如果文件夹位于远程服务器或其他机器上,则需要修改 subtables_path 变量以反映正确的路径。
  • 代码中的 receiver_name 变量是从收件人邮箱地址中提取的,假设邮箱地址符合 username@domain.com 的格式。如果邮箱地址格式不同,则需要修改代码以提取正确的用户名。
  • 该代码使用的是 smtplib 模块,该模块可以用于发送电子邮件。如果您的环境中没有安装该模块,则需要使用 pip install smtplib 命令进行安装。

其他注意事项:

  • 如果您使用的是 Gmail 邮箱,则需要在 Gmail 的账户设置中开启 '允许较不安全的应用程序访问你的帐户' 选项,才能使用 smtplib 模块发送邮件。
  • 在实际使用中,您可以根据需要修改代码中的参数,例如邮件主题、内容、附件路径等。
Python 发送邮件附件:根据收件人名称匹配对应 Excel 文件

原文地址: https://www.cveoy.top/t/topic/oTzc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录