Python从函数添加附件到电子邮件

问题描述 投票:0回答:1

我正在尝试自动从Python发送附件和电子邮件:

def Emailer(text, subject, recipient):
    import win32com.client as win32   
    outlook = win32.Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.To = recipient
    mail.Subject = subject
    mail.HtmlBody = text
    mail.Display(True)
    attachment = 'C:/Users/.../file.pdf'
    mail.Attachments.Add(attachment)

Emailer('text', 'test', '[email protected]')

但是,这不会添加附件。路径应该是正确的,因为当我在下面尝试时,它的工作原理如下:

import win32com.client as win32
mail = win32.Dispatch('outlook.application').CreateItem(0)
mail.To = '[email protected]'
mail.Subject = 'test'
mail.HTMLBody = 'text'

attachment  = 'C:/Users/.../file.pdf'
mail.Attachments.Add(attachment)
mail.Display(True)

任何人都知道我的Emailer()做错了什么

python outlook win32com
1个回答
1
投票

在Emailer中,您可以在添加附件之前调用MailItem.Display(True),而在“工作”片段中,您可以在之后执行此操作。根据the official documentation Display(True)创建一个模态窗口,它也可能是一个阻塞调用意味着Emailer将停止运行,直到你关闭窗口。

我建议你在添加附件之后将调用移到Display,或者尝试打开一个非模态窗口。

顺便提一下,根据上面链接的doc,不推荐使用Display。

© www.soinside.com 2019 - 2024. All rights reserved.