web-dev-qa-db-fra.com

Comment générer et ouvrir un e-mail Outlook avec Python (mais ne pas envoyer)

J'ai un script qui crée et envoie automatiquement des e-mails envoie des e-mails en utilisant la fonction simple ci-dessous:

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

Mais comment puis-je ouvrir cet e-mail dans une fenêtre Outlook afin qu'il puisse être modifié et envoyé manuellement?

Idéalement, j'aimerais quelque chose comme ça:

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

Appelez mail.Display(True) au lieu de mail.send

23

tldr: utilisez mail.Display(False) au lieu de mail.Display(True)

mail.Display (False) affichera toujours la fenêtre. Si vous utilisez mail.Display (True), les scripts s'arrêtent jusqu'à la fermeture de la fenêtre. Utilisez donc mail.Display (False), cela ouvrira la fenêtre et votre script python passera à la commande suivante. Il est également utile de savoir que vous pouvez utiliser mail.save () pour enregistrer en tant que brouillon dans le dossier brouillon.

Visitez https://msdn.Microsoft.com/en-us/VBA/Outlook-VBA/articles/mailitem-display-method-Outlook pour en savoir plus sur ce

6
Sudath Murari

Voici une autre option pour enregistrer d'abord le courrier sur le disque:

import webbrowser

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

De cette façon, le courrier s'ouvre maximisé.

3
Max

J'aime la solution :) Mais je veux ajouter quelques infos:

En utilisant la solution, c'est probablement le meilleur moyen d'ajouter une entrée de courrier au format Html pour la modification.

Ajoutez également le fichier à partir du répertoire de travail ...

#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