[英]Populate e-mails in outlook with the right attachments
我有一个功能可以生成 Outlook 电子邮件并使用属于电子邮件地址的附件填充电子邮件。
df = pd.DataFrame(data = {'E-mail': ['peter@gmail.com', 'peter@gmail.com', 'jake@gmail.com', 'jake@gmail.com'],
'Fruit': ['apple.pdf', 'pear.pdf', 'orange.pdf', 'banana.pdf']})
这是我的电子邮件功能。
def Email():
for i in df['E-mail'].unique():
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = i
mail.Subject = "Fruit reports"
for i,j in df.groupby('E-mail')['Fruit']:
files = j.to_frame(i)
for fil in files[i]:
attachment = dirLoc + '\\' + fil
mail.Attachments.Add(attachment)
mail.Display(False)
Email()
我的 for 循环有问题。 它将来自Fruit
而不是apple.pdf
和pear.pdf
所有附件附加到peter@gmail.com
并将orange.pdf
和banana.pdf
到jake@gmail.com
。
是否有一种简单的解决方案可以为正确的电子邮件分配正确的附件?
我会说这是因为您for i, j in df.groupby('E-mail')['Fruit']
中for i, j in df.groupby('E-mail')['Fruit']
再次迭代了所有邮件for i, j in df.groupby('E-mail')['Fruit']
并且您实际上覆盖了i
。
也许更简洁的方法是只分组一次,例如:
import os
...
def send_all_mail(df):
outlook = win32.Dispatch('outlook.application')
for dest_mail, group in df.groupby('E-Mail'):
mail = outlook.CreateItem(0)
mail.To = dest_mail
mail.Subject = "Fruit reports"
for fname in group['Fruits'].unique():
attachment = os.path.join(dirLoc, fname)
mail.Attachments.Add(attachment)
mail.Display(False)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.