Voici 2 blocs de code. Le premier enverra un message à Gmail avec le sujet et l'expéditeur corrects. Cependant, quand je mets le premier code dans une fonction, l'email perd l'expéditeur et l'information de sujet.Utilisation de la fonction pour envoyer des gmails via python
Pourquoi est-ce et comment le réparer?
Je voudrais pouvoir appeler cette fonction à partir d'autres scripts python pour m'aviser lorsque mon travail est terminé. La fonction fonctionne et s'exécute sans erreur, et le courrier électronique le fait à ma boîte de réception, mais je perds l'information d'expéditeur et, plus important encore, l'en-tête de sujet.
1er code qui fonctionne comme prévu:
import smtplib
gmail_user = '[email protected]'
gmail_password = 'password'
sent_from = gmail_user
to = ['[email protected]']
subject = "job complete"
body = "python script " + str(name) + " has finished"
email_text = """\
From: %s
To: %s
Subject: %s
%s
""" % (sent_from, ", ".join(to), subject, body)
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(gmail_user, gmail_password)
server.sendmail(sent_from, to, email_text)
server.close()
Code 2 qui perd d'info sujet et expéditeur:
def mailer(subject, body):
import smtplib
gmail_user = '[email protected]'
gmail_password = 'password'
sent_from = gmail_user
to = ['[email protected]']
subject = subject
body = body
email_text = """\
From: %s
To: %s
Subject: %s
%s
""" % (sent_from, ", ".join(to), subject, body)
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(gmail_user, gmail_password)
server.sendmail(sent_from, to, email_text)
server.close()
subject = "job complete"
body = "python script " + str(name) + " has finished"
mailer(subject, body)
Dans votre 2ème code, pourquoi faites-vous: 'subject = subject' et' body = body'? Cela devrait être redondant –