问题 如何使用Python生成和打开Outlook电子邮件(但不发送)


我有一个脚本,使用下面的简单功能自动创建和发送电子邮件发送电子邮件:

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

提前致谢


12371
2018-01-06 18:11


起源



答案:


呼叫 mail.Display(True) 代替 mail.send


13
2018-01-06 18:24



替换 mail.open 同 mail.Display 什么也没做,电子邮件没有发送或打开 - wnnmaw
它需要 mail.Display(True) - wnnmaw
我不知道Python如何处理可选参数,如果未指定,Modal参数默认为false。 - Dmitry Streblechenko
对于 mail.send 工作也必须如此 mail.Send()。 - Prof. Falken


答案:


呼叫 mail.Display(True) 代替 mail.send


13
2018-01-06 18:24



替换 mail.open 同 mail.Display 什么也没做,电子邮件没有发送或打开 - wnnmaw
它需要 mail.Display(True) - wnnmaw
我不知道Python如何处理可选参数,如果未指定,Modal参数默认为false。 - Dmitry Streblechenko
对于 mail.send 工作也必须如此 mail.Send()。 - Prof. Falken


tldr:使用 mail.Display(False) 代替 mail.Display(True)

mail.Display(False)仍然会显示窗口。 如果使用mail.Display(True),脚本将停止,直到窗口关闭。所以使用mail.Display(False)这将打开窗口,你的python脚本将继续下一个命令。知道您可以使用mail.save()在草稿文件夹中保存为草稿也很有用。

访问 https://msdn.microsoft.com/en-us/VBA/Outlook-VBA/articles/mailitem-display-method-outlook 阅读更多相关内容


1
2017-11-17 18:58