以下 Python 代码演示如何根据 Excel 表格中项目经理的姓名自动附加对应项目经理的表格作为邮件附件。

import os
import pandas as pd
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import smtplib

# 加载 Excel 文件数据
df = pd.read_excel('Project manager email address_test.xlsx')
receiverList = df['Email address'].astype(str).tolist()  # 转换为字符串
cc = df['CC'].astype(str).tolist()  # 转换为字符串

# 设置邮件信息
msg = MIMEMultipart()
msg['Subject'] = 'Open ProNovia E-mail reminder'
msg['From'] = sender
msg['To'] = ','.join(receiverList)  # 需要以逗号分隔的字符串
msg['Cc'] = ','.join(cc)

receiverList.extend(cc)  # 将抄送列表添加到收件人列表中

# 添加邮件内容
puretext = MIMEText(content, 'html', 'utf-8')  # 纯 HTML
msg.attach(puretext)

# 遍历 Excel 文件中的每一行并附加对应子表格
for i, row in df.iterrows():
    pm_name = row['Project manager name']
    pm_email = row['Email address']
    subtable_path = os.path.join('subtables', f'{pm_name}.xlsx')
    if os.path.exists(subtable_path):
        xlsxpart = MIMEApplication(open(subtable_path, 'rb').read())
        xlsxpart.add_header('Content-Disposition', 'attachment', filename=f'{pm_name}.xlsx')
        msg.attach(xlsxpart)
    else:
        print(f'Subtable for {pm_name} not found')

# 发送邮件
smtpObj.sendmail(sender, receiverList, msg.as_string())

代码说明:

  1. 加载 Excel 文件数据: 使用 pd.read_excel() 读取 'Project manager email address_test.xlsx' 文件,并将其存储在 df 数据框中。
  2. 设置邮件信息: 使用 MIMEMultipart() 创建邮件对象,设置主题、发件人、收件人、抄送人等信息。
  3. 添加邮件内容: 使用 MIMEText() 创建邮件内容对象,并将其附加到邮件对象中。
  4. 循环遍历 Excel 文件中的每一行: 使用 df.iterrows() 遍历 df 数据框中的每一行。
  5. 获取项目经理姓名和子表格路径: 从当前行获取项目经理姓名和对应的子表格文件名,并使用 os.path.join() 获取子表格的完整路径。
  6. 判断子表格是否存在: 使用 os.path.exists() 检查子表格是否存在。如果存在,则使用 MIMEApplication() 创建附件对象,将子表格的内容读入并附加到邮件对象中。
  7. 发送邮件: 使用 smtpObj.sendmail() 发送邮件。

注意:

  • 请确保 'Project manager email address_test.xlsx' 文件存在,并且该文件中的 'Email address' 列包含所有项目经理的电子邮件地址。
  • 请确保 'subtables' 文件夹存在,并且该文件夹包含所有项目经理的子表格文件,每个子表格文件的文件名应与项目经理姓名相同。
  • sendersmtpObj 是邮件发送的配置信息,需要根据实际情况进行设置。
  • 代码中的 content 是邮件内容的占位符,需要根据实际情况进行替换。

代码示例:

假设 'Project manager email address_test.xlsx' 文件内容如下:

| Project manager name | Email address | CC | |---|---|---| | John Doe | john.doe@example.com | jane.doe@example.com | | Jane Doe | jane.doe@example.com | john.doe@example.com |

并且 'subtables' 文件夹中存在两个文件:'John Doe.xlsx''Jane Doe.xlsx'

运行代码后,将分别发送两封邮件给 John Doe 和 Jane Doe,并将他们对应的子表格文件作为附件发送。

总结:

通过使用 Python 代码,可以轻松实现根据 Excel 表格内容自动发送邮件并附加对应附件的功能,提高工作效率并避免人工操作的错误。

其他功能:

  • 可以将代码封装成函数,方便重复使用。
  • 可以根据需要添加其他功能,例如自定义邮件内容、添加邮件签名等。

相关资料:

希望以上内容对您有所帮助!


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

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