我有一个脚本,自动创建和发送电子邮件发送电子邮件使用以下简单的功能:
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.send
但是,如何在Outlook窗口中打开此电子邮件,以便可以手动编辑和发送它?
理想情况下,我喜欢这样的东西:
def __Emailer(text, subject, recipient, auto=True):
import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = recipient
mail.Subject = subject
mail.HtmlBody = text
if auto:
mail.send
else:
mail.open # or whatever the correct code is
发布于 2014-01-07 02:25:00
调用mail.Display(True)
而不是mail.send
。
发布于 2017-11-18 02:58:11
tldr:使用mail.Display(False)
而不是mail.Display(True)
mail.Display(False)仍将显示该窗口。如果使用mail.Display(True),则脚本将停止,直到窗口关闭。所以使用mail.Display(False),这将打开窗口,您的python脚本将继续执行下一个命令。知道您可以使用mail.save()在draft文件夹中另存为draft也很有用。
请访问https://msdn.microsoft.com/en-us/VBA/Outlook-VBA/articles/mailitem-display-method-outlook了解更多相关信息
发布于 2019-10-02 20:53:56
我喜欢这个解决方案:),但我想添加一些信息:
使用该解决方案,添加Html格式的邮件输入进行修改可能是最好的方法。
还要添加工作目录中的文件...
#requirements.txt add for py 3 -> pypiwin32
def Emailer(text, subject, recipient):
import win32com.client as win32
import os
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = recipient
mail.Subject = subject
mail.HtmlBody = text
###
attachment1 = os.getcwd() +"\\file.ini"
mail.Attachments.Add(attachment1)
###
mail.Display(True)
MailSubject= "Auto test mail"
MailInput="""
#html code here
"""
MailAdress="person1@gmail.com;person2@corp1.com"
Emailer(MailInput, MailSubject, MailAdress ) #that open a new outlook mail even outlook closed.
https://stackoverflow.com/questions/20956424
复制相似问题