Python 邮件附件问题:子表文件路径错误

在使用 Python 发送邮件并附件子表文件时,如果出现运行结果都是 not found,但确实有对应的 Excel 表,可能是代码中文件路径的错误导致的。

问题在于代码中的字符串 'subtables_path' 应该是变量 subtables_path,因为前者是一个字符串常量,而后者才是存储子表文件夹路径的变量。

因此,应该将这行代码修改为:

excel_path = os.path.join(subtables_path, f'{pm_name}.xlsx')

这样就能正确地找到子表文件夹下的 Excel 文件,并将其作为附件添加到邮件中。

代码示例:

import os
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

subtables_path = r'C:\Users\LOH2HZ\Desktop\2023.6 email sending\SubTables'  # 定义子表文件夹的路径

# ... 邮件内容设置 ...

for i, row in df.iterrows():  # 遍历 Excel 文件的每一行并附加相应的子表
    pm_name = row['Project manager']
    pm_email = row['Email address']

    excel_path = os.path.join(subtables_path, f'{pm_name}.xlsx')  # 修改后的代码
    if os.path.exists(excel_path):
        xlsxpart = MIMEApplication(open(excel_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')

# ... 发送邮件 ...

通过将代码中的 'subtables_path' 替换为变量 subtables_path,就可以正确地找到子表文件夹下的 Excel 文件,并将其作为附件添加到邮件中。


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

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