【问题标题】:Populate e-mails in outlook with the right attachments使用正确的附件填充 Outlook 中的电子邮件
【发布时间】:2020-01-10 12:07:25
【问题描述】:

我有一个生成 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.comorange.pdfbanana.pdfjake@gmail.com

是否有一种简单的解决方案可以将正确的附件分配给正确的电子邮件?

【问题讨论】:

    标签: python pandas function for-loop outlook


    【解决方案1】:

    我会说这是因为您再次遍历 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)
    

    【讨论】:

    • 谢谢!这正是我正在寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    相关资源
    最近更新 更多