导入所需的模块

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

定义发送邮件的账号和密码

sender = 'example@proNovia.com' password = 'password'

定义收件人列表的 Excel 文件路径和工作表名称

recipients_path = r'C:\Users\LOH2HZ\Desktop\2023.6 email sending\Recipients.xlsx' recipients_sheet = 'Sheet1'

读取收件人列表

df = pd.read_excel(recipients_path, sheet_name=recipients_sheet)

连接 SMTP 服务器

smtpObj = smtplib.SMTP('smtp.example.com', 587) smtpObj.starttls() smtpObj.login(sender, password)

定义子表文件夹的路径

subtables_path = r'C:\Users\LOH2HZ\Desktop\2023.6 email sending\SubTables'

遍历 Excel 文件的每一行并附加相应的子表

for i, row in df.iterrows(): pm_name = row['Project manager'] pm_email = row['Email address']

if pd.isna(pm_name) or pd.isna(pm_email):
    print(f'Missing information for row {i}')
    continue

# 创建邮件
msg = MIMEMultipart()
msg['Subject'] = 'Open ProNovia E-mail reminder' # 主题
msg['From'] = sender # 发件人
msg['To'] = pm_email # 收件人

# 正文
content='''

'''

puretext = MIMEText(content,'html','utf-8') # 纯文本
msg.attach(puretext)

# 附件
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)
    smtpObj.sendmail(sender, pm_email, msg.as_string()) # 发送邮件给该 Project manager
else:
    print(f'Subtable for {pm_name} not found')

发送完所有的邮件后关闭连接

smtpObj.quit()

Python 邮件发送脚本: 批量发送邮件并附带子表

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

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