我可以使用以下单个附件脚本向 outlook 上的不同收件人发送电子邮件,但是如果我尝试使用 for 循环向每个用户发送不同的附件,则会失败。
目前该脚本正在使用attachment = r'C:\Users\roy\Royfile.csv'. 但我想要attachment = file,以便附件在每个 for 循环中针对不同的用户进行更改。这部分不起作用。
不同用户的不同文件,示例Royfile.csv如下。但是还有 50 个这样的文件。
Folder FolderOwner EmailAddress AttachmentPath
C:\folder1\ Roy Roy@gmail.com Royfile.csv
D:\folder2\ Roy Roy@gmail.com Royfile.csv
同一文件夹中的第二个文件Jackfile.csv:
Folder FolderOwner EmailAddress AttachmentPath
C:\folder3\ Jack Jack@gmail.com Jackfile.csv
D:\folder4\ Jack Jack@gmail.com Jackfile.csv
例如第三个文件Mandyfile.csv。同样的方式,同一文件夹中的 50 个用户总共有 50 个文件。
Folder FolderOwner EmailAddress AttachmentPath
C:\folder5\ Mandy Mandy@gmail.com Mandyfile.csv
D:\folder6\ Mandy Mandy@gmail.com Mandyfile.csv
Python脚本
import glob, as
import win32com.client as win32
import pandas as pd
for file in glob.glob("*file.csv"):
print(file)
email_list = pd.read_csv(file)
names = email_list['FolderOwner']
emails = email_list['EmailAddress']
attachments = email_list['AttachmentPath']
for i in range(len(emails)):
print(file)
name = names[i]
email = emails[i]
attachment = r'{}.csv'.format(attachments)
with open(attachment, 'r') as my_attachment:
myfile = my_attachment.read()
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = email
mail.Subject = 'Message subject'
mail.Body = 'Hello ' + name
mail.Attachments.Add(attachment)
mail.Send()
break
如果删除附件部分,脚本的当前输出:
Royfile.csv
Royfile.csv
Jackfile.csv
Jackfile.csv
Mandyfile.csv
Mandyfile.csv
...
..
.
现在正在为附件 = ??? 所需要的东西而苦苦挣扎。这样每个文件都会发送给 50 个用户。
aluckdog
慕工程0101907
相关分类