Python 通过函数向电子邮件添加附件
Python adding attachment to an e-mail from a function
我正在尝试自动发送来自 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', 'name@mail.com')
但是,这不会添加附件。路径应该是正确的,因为当我在下面尝试时,它有效:
import win32com.client as win32
mail = win32.Dispatch('outlook.application').CreateItem(0)
mail.To = 'name@mail.com'
mail.Subject = 'test'
mail.HTMLBody = 'text'
attachment = 'C:/Users/.../file.pdf'
mail.Attachments.Add(attachment)
mail.Display(True)
任何人都知道我的 Emailer()
做错了什么
在 Emailer 中,您在添加附件之前调用 MailItem.Display(True)
,而在 "working" 片段中,您在添加附件之后调用。根据 the official documentation Display(True)
创建模态 window,它也可能是阻塞调用,这意味着 Emailer
将停止 运行 直到您关闭 window .
我建议将调用移至 Display
添加附件后,或者尝试打开非模态 window.
顺便说一句,根据上面链接的文档,显示已弃用。
我正在尝试自动发送来自 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', 'name@mail.com')
但是,这不会添加附件。路径应该是正确的,因为当我在下面尝试时,它有效:
import win32com.client as win32
mail = win32.Dispatch('outlook.application').CreateItem(0)
mail.To = 'name@mail.com'
mail.Subject = 'test'
mail.HTMLBody = 'text'
attachment = 'C:/Users/.../file.pdf'
mail.Attachments.Add(attachment)
mail.Display(True)
任何人都知道我的 Emailer()
在 Emailer 中,您在添加附件之前调用 MailItem.Display(True)
,而在 "working" 片段中,您在添加附件之后调用。根据 the official documentation Display(True)
创建模态 window,它也可能是阻塞调用,这意味着 Emailer
将停止 运行 直到您关闭 window .
我建议将调用移至 Display
添加附件后,或者尝试打开非模态 window.
顺便说一句,根据上面链接的文档,显示已弃用。