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
Appelez mail.Display(True)
au lieu de mail.send
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
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é.
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.