web-dev-qa-db-ja.com

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
23
wnnmaw

_mail.send_の代わりにmail.Display(True)を呼び出す

23

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 にアクセスしてください

6
Sudath Murari

最初にメールをディスクに保存する別のオプションを次に示します。

import webbrowser

mail.SaveAs(Path=save_path)
webbrowser.open(save_path)

このようにして、メールは最大化して開きます。

3
Max

私は解決策が好きです:)しかし、いくつかの情報を追加したいと思います:

ソリューションを使用すると、変更のためにHTML形式でメール入力を追加するのがおそらく最良の方法です。

また、作業ディレクトリからファイルを追加します...

#requirements.txt add for py 3 -> pypiwin32

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
    ###

    attachment1 = os.getcwd() +"\\file.ini"

    mail.Attachments.Add(attachment1)

    ###
    mail.Display(True)

MailSubject= "Auto test mail"
MailInput="""
#html code here
"""
MailAdress="[email protected];[email protected]"

Emailer(MailInput, MailSubject, MailAdress ) #that open a new Outlook mail even Outlook closed.
2
animati