繁体   English   中英

使用正确的附件在 Outlook 中填充电子邮件

[英]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.pdfpear.pdf所有附件附加到peter@gmail.com并将orange.pdfbanana.pdfjake@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM