Je cherche à programmer (en python) l’envoi de mails depuis le RPi. Je suis en Raspbian sans interface graphioque. Voici mon programme:`
#!/usr/bin/env python 3
-- coding: utf8 --
from email.mime.text import MIMEText
def send_email(subject, body, to_email):
smtp_server = ‹ smtp.xxxx.fr › # Remplacez par le serveur SMTP de votre fournisseur
smtp_port = 587
smtp_user = ‹ yyyy@xxxx.fr › # Remplacez par votre adresse e-mail
smtp_password = ‹ xyz › # Remplacez par votre mot de passe
Lorsque je l’exécute, je ne vois rien à l’écran, donc il n’y a pas d’erreur. Mais je ne reçois pas les mails. Pour avancer j’ai testé : telnet smtp.xxxx.fr
(avec ce qu’il faut à la place des « xxxx ») et je me suis bien connecté.
Une petite erreur dans mon message : en effet, j’avais précisé le port 587.
Pour ce qui est de l’appel, c’est tout simplement « sudo python E-Mail.py »
Je suis du même avis que @bof. L’exemple de code que vous avez posté ne semble pas complet. Je vous invite à rechercher un autre code sur le net, car celui ci risque d’être long à debugger. Dites nous si ça pose toujours souci après.
Je suppose que les gens qui répondent sont suffisamment compétent pour savoir ce qu’ils disent. Pouvez-vois m’indiquer ce qu’il manque à mon code, à votre avis (évidemment, il ne s’agit pas des données perso que j’ai masquées). Ce code n’est pas un sous-programme, c’est un programme console que je lance depuis la console. Il ne me renvoie aucune erreur, aucune impression à l’écran, mais je ne reçois pas le mail. Quand je lance la ligne seule (avec le numéro de port 587, excusez-moi encore) je reçois bien la réponse comme quoi je suis connecté.
Je ne prétend pas être hyper compétent, je connais juste un peu Python.
Dans un code Python, en général, on commence par importer des bibliothèques, puis on défini des variables, puis on écrit des fonctions. Alors, est écrit un programme principal qui exécute son coeur de fonctionnement en appelant tout ce qui a été défini au début.
Dans le bout de code qui a été posté ici, seul une partie de « email.mime.text » est importé, pourquoi pas. Ensuite une fonction est définie (send_email), à l’intérieur elle fait appel à " smtplib qui est une librairie qui n’est pas importée au début. Enfin le programme principal devant faire appel à la fonction n’est pas écrit.
Donc votre programme charge une librairie, quelques variables, une fonction et ne fait appel à rien au final. Donc puisqu’on ne lui demande de ne rien faire, il ne fait rien et donc il ne retourne aucune erreur.
A mon niveau, je n’ai pas les compétences pour dépanner/écrire autant un script, d’où ma proposition de trouver quelque chose de fonctionnel sur le net (au pire à adapter un peu) qui corresponde à votre besoin.
Il faut savoir qu’en fonction des versions de Python certains programmes ne sont pas compatibles, c’est pour cela qu’il faut tester…
Je vous renouvelle mes excuses : il manquait en effet un « send_email() » (sans tabulation) à la fin de mon code, et quelques détails. Voici sa version actuelle :
J’ai copié votre script et j’ai la même erreur avec mes paramètres. Après plus d’une heure de recherche sur le net de cette erreur, je ne trouve pas de piste. Peut être une incompatibilité SSL (que je ne sais pas comment résoudre).
Je viens de tester votre script (légèrement modifié) avec un compte Google, il fonctionne. Ce qui me fait penser que c’est un problème de communication avec d’autres serveurs SMTP, probablement des soucis de compatibilité SSL ?