Sujet d'un mail Python
Résolu
biche_35
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
biche_35 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
biche_35 Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens vers vous pour une problème assez bête mais néanmoins gênant.
Je viens de développer un script Python permettant d'envoyer le contenu d'un fichier par mail.
Voici le code :
Jusque là, aucun problème, je reçois bien le contenu du fichier 'check_cyes2.swp' sur ma boite mail.
En revanche, le mail que je reçois ne possède pas de sujet et malgré avoir traîné sur beaucoup de sites, je ne trouve pas la réponse en fonction de mon script.
L'objectif serait de rajouter un argument 'sujet' à ma fonction 'sendmail' pour pouvoir inscrire un sujet en dur à chaque appel de ma fonction. Ce qui donnerai :
sendmail(result, 'Voici le sujet de mon mail')
Quelqu'un a t'il une idée ?
Merci d'avance de vos infos
Je viens vers vous pour une problème assez bête mais néanmoins gênant.
Je viens de développer un script Python permettant d'envoyer le contenu d'un fichier par mail.
Voici le code :
#!/usr/bin/python2.7
import smtplib
fromaddr = "mailexp@test.fr
toaddrs = "maildest@test.fr"
def sendmail(message):
server = smtplib.SMTP('localhost')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, message)
server.quit()
####ENVOI CHECK CYES2###
fichier = open("/home/exploit/bin/check_cyes2.swp", "r")
result = fichier.read()
if "vs-" in result:
sendmail(result)
Jusque là, aucun problème, je reçois bien le contenu du fichier 'check_cyes2.swp' sur ma boite mail.
En revanche, le mail que je reçois ne possède pas de sujet et malgré avoir traîné sur beaucoup de sites, je ne trouve pas la réponse en fonction de mon script.
L'objectif serait de rajouter un argument 'sujet' à ma fonction 'sendmail' pour pouvoir inscrire un sujet en dur à chaque appel de ma fonction. Ce qui donnerai :
sendmail(result, 'Voici le sujet de mon mail')
Quelqu'un a t'il une idée ?
Merci d'avance de vos infos
A voir également:
- Sujet d'un mail Python
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Citizen code python - Accueil - Outils
- Comment télécharger un mail - Guide
- Comment transférer un mail sur un autre mail - Guide
5 réponses
'lut, en SMTP ce genre d'infos circule dans les en-têtes du mail, qui sont juste devant le contenu du mail. Le nom de l'en-tête du sujet c'est "Subject"; voici comment faire:
from human import idiocy
del idiocy
def sendmail(message): server = smtplib.SMTP('localhost') server.set_debuglevel(1) message = 'Subject: Mon titre de mail\n\n' + message server.sendmail(fromaddr, toaddrs, message) server.quit()Attention toutefois, j'ai mis deux retours à la ligne
\n; si tu as d'autres en-têtes, il ne faut en mettre qu'un seul, car un double retour à la ligne détermine la fin du bloc des en-têtes.
from human import idiocy
del idiocy
Salut, fiou rapide intervention ;)
En tout cas ça a l'air de fonctionner ;)
Du coup je réfléchis à passer ça en argument de ma fonction "sendmail" et là je me dit que c'est pas gagné...
Merci bien de ta réponse
En tout cas ça a l'air de fonctionner ;)
Du coup je réfléchis à passer ça en argument de ma fonction "sendmail" et là je me dit que c'est pas gagné...
Merci bien de ta réponse
Si tu as la librairie email.mime.text à ta disposition, il existe l'objet
MIMETextqui peut prendre en charge les en-têtes à ta place, pour te simplifier le travail:
from email.mime.text import MIMEText as ... def sendmail(message): server = smtplib.SMTP('localhost') server.set_debuglevel(1) m = MIMEText(message) m['Subject'] = "Mon titre de mail" m['From'] = fromaddr m['To'] = toaddrs server.sendmail(fromaddr, toaddrs, m.as_string()) server.quit()
Arf, c'est juste que je compte utiliser cette fonction pour d'autre situation. Du coup, le sujet de mon mail est susceptible d'être modifier en fonction du fichier qui est envoyé. C'est d'ailleurs pour cette raison que je n'ai pas utiliser cette libraire.
J'insiste bien sur le fait de pouvoir insérer le sujet en argument de ma fonction 'sendmail'
J'insiste bien sur le fait de pouvoir insérer le sujet en argument de ma fonction 'sendmail'
Désolé j'suis encore un peu noob sur le sujet...
Voici donc ma fonction après correction :
Puis mon appel de fonction :
Mais j'obtiens l'erreur suivante :
NameError: global name 'MIMEText' is not defined
Pareil si j'appel ma fonction de cette manière :
sendmail(result, {'Subject': "Mon sujet de mail"})
Pour info, j'ai bien pensé à importer ma librairie de cette manière :
Là, tu as atteint mes limites de compréhension :D
Voici donc ma fonction après correction :
def sendmail(message, sujet): server = smtplib.SMTP('localhost') server.set_debuglevel(1) m = MIMEText(message) m['Subject'] = sujet m['From'] = fromaddr m['To'] = toaddrs server.sendmail(fromaddr, toaddrs, m.as_string()) server.quit()
Puis mon appel de fonction :
sendmail(result, 'Voici mon sujet')
Mais j'obtiens l'erreur suivante :
NameError: global name 'MIMEText' is not defined
Pareil si j'appel ma fonction de cette manière :
sendmail(result, {'Subject': "Mon sujet de mail"})
Pour info, j'ai bien pensé à importer ma librairie de cette manière :
from email.mime.text import MIMEText as text
Là, tu as atteint mes limites de compréhension :D
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question