Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoyer un mail d'un site en développement

Python, Bottle

    8 septembre 2022 à 16:59:01

    Bonjour

    Je souhaite que mon application web envoie des mails, par exemple au nouvel abonné pour confirmer son inscription, ou pour répondre à quelqu'un qui a oublié ses identifiants. J'ai trouvé ce tuto. Il faut demander à l'hébergeur l'adresse du serveur smtp, et le port. Mais je n'en suis pas encore tout à fait au déploiement, je termine le développement en local. Est-ce que je peux faire marcher ça quand même, en utilisant mon adresse mail personnelle ? Je suppose qu'il faut alors prendre le serveur smtp et le port de mon hébergeur mail ?

    • Partager sur Facebook
    • Partager sur Twitter

    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

      8 septembre 2022 à 18:50:04

      oui, puisque le tuto n'indique pas de contraintes particulières et qu'il est générique
      • Partager sur Facebook
      • Partager sur Twitter
        8 septembre 2022 à 19:17:42

        Bonjour umfred ! et merci. Je suis en train de faire. Je savais pas que l'on pouvait créer des mails en html ! J'aurais dû m'en douter. Les mails qu'on reçoit d'entreprises sont pareils au design de leurs sites.

        je viens de lancer et ça foire !

        with smtplib.SMTP_SSL(smtp_adresse, smtp_port, context=context) as server :

        donne ceci : gaierror(8, 'nodename nor servname provided, or not known')

        J'ai pris pour smtp_adresse et smtp_port ceux trouvés dans les préférences de Mail. (smtp.yahoo.com et 993).

        "nor", je me rappelle plus ce que c'est. j'interprète ainsi : nom de nœud ou de serveur non donné, ou inconnu.


        9 septembre ; Bonjour

        J'ai trouvé ceci comme serveur smtp yahoo : smtp.mail.yahoo.com au lieu du smtp.yahoo.com que j'avais d'abord essayé. (je crois que mon mail sous mac OS est obsolète, et je me demande si tout est bien à jour. 

        Avec ce nouveau serveur, on mentionne 465 ou 587 comme ports. Alors j'ai essyé diverses solutions :

        avec smtp.mail.yahoo.com et 465, j'obtiens :

        SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')

        avec smtp.mail.yahoo.com et 587 :

        SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:997)')

        -
        Edité par zakod 9 septembre 2022 à 8:42:49

        • Partager sur Facebook
        • Partager sur Twitter

        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

          9 septembre 2022 à 14:04:47

          Peux-tu donner la ligne où tu assignes la variable context ?
          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            9 septembre 2022 à 14:29:25

            la ligne a changé est probablement celle de la définition de context > context = ssl.SSLContext(ssl.PROTOCOL_TLS)

            https://stackoverflow.com/questions/19390267/python-3-smtplib-exception-ssl-wrong-version-number-logging-in-to-outlook 

            • Partager sur Facebook
            • Partager sur Twitter
              9 septembre 2022 à 15:22:22

              zakod a écrit:

              SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')

              Le message d'erreur est assez clair pour causer SSL avec un hôte, il faut la clef privée et le certificat qui va avec... voir la documentation SSL

              • Partager sur Facebook
              • Partager sur Twitter
                11 septembre 2022 à 14:13:48

                Bonjour fred, umfred et mps. Pardon, j'ai pas eu de notification, je croyais que personne n'avait répondu. Je suis revenu pour voir mes messages d'erreur !

                Réponse à Fred : context = ssl.create_default_context()

                à umfred : je vais suivre le lien.

                à mps : l'hôte dont vous parlez, c'est yahoo ? Je vais suivre le lien.

                J'ai essayé la ligne proposée par umfred, ça donne ça :

                 raise SMTPServerDisconnected("Connection unexpectedly closed")
                smtplib.SMTPServerDisconnected: Connection unexpectedly closed

                J'ai l'impression que c'est pas dû à moi.

                Je regarde la documentation sur le module SSL. Ça me dépasse !

                Si j'ai bien compris, ça concerne les réseaux en général ? Aussi bien les mails que les connexions web ?

                Il ne me faut un niveau de sécurité extraordinaire, car rien de bien sensible ne transitera par mon site. Le context = ssl.create_default_context() me semblait apporter cette sécurité minimum. 

                -
                Edité par zakod 11 septembre 2022 à 14:46:59

                • Partager sur Facebook
                • Partager sur Twitter

                S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                  13 septembre 2022 à 7:46:50

                  Merci umfred pour ce fil très riche et qui me semble résoudre la question. Je dois prendre un peu de temps, j'ai déjà essayé la première solution proposée, qui ne fonctionne pas. J'ai retiré le try pour savoir la nature de l'erreur. Je suis les étapes du fil, je suppose que la bonne solution va finir par se faire jour.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                    15 septembre 2022 à 16:35:04

                    Bonjour

                    Je reviens à ce problème de mail. J'ai testé le deuxième script du fil SO qu'a donné umfred. Comme le confrère, je tombe sur :

                    smtplib.SMTPServerDisconnected: Connection unexpectedly closed

                    Je suis les conseils donnés pour résoudre ça, il faut générer un mot de passe d'application sur mon compte Yahoo. Mais quel est le nom de mon application ? Je ne vois pour l'instant que le radicande de mon fichier python !

                    • Partager sur Facebook
                    • Partager sur Twitter

                    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                      15 septembre 2022 à 18:38:12

                      Je crois qu'au niveau du nom ce n'est pas très grave ce que tu indiques, c'est plus une indication, tu peux mettre test_siteweb
                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 septembre 2022 à 9:34:46

                        Bonjour umfred

                        Je laisse tomber yahoo ! J'ai activé mon mail chez mon hébergeur, ce qui au fond est plus logique, puisque c'est là que se trouvera mon application. Ça marche, le mail est parti et arrivé. Mais j'obtiens quand-même ceci :

                        DeprecationWarning: ssl.PROTOCOL_TLS is deprecated

                        context = ssl.SSLContext(ssl.PROTOCOL_TLS)

                        J'ai cherché, on préconise de recourir à ssl.PROTOCOL_TLS_SERVER ou _CLIENT. 

                        J'ai tenté avec SERVER, mais j'obtiens ça, et cette fois-ci, ça ne marche pas :
                        ssl.SSLError: Cannot create a client socket with a PROTOCOL_TLS_SERVER context (_ssl.c:801)

                        Je suppose qu'il me faut définir quelque chose pour le client, mais quoi ?

                        Ne ris pas, je pose une question : le serveur, c'est bien le serveur d'envoi du mail, donc mon hébergeur, et le client, c'est la machine qui héberge la messagerie de mon destinataire ?


                        -
                        Edité par zakod 16 septembre 2022 à 9:41:40

                        • Partager sur Facebook
                        • Partager sur Twitter

                        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                          16 septembre 2022 à 11:49:34

                          le client c'est celui qui interroge/accède à la messagerie et le serveur celui qui héberge la messagerie.

                          pour le reste, je suis un peu dans le flou aussi

                          • Partager sur Facebook
                          • Partager sur Twitter
                            16 septembre 2022 à 19:24:12

                            Merci quand-même !
                            • Partager sur Facebook
                            • Partager sur Twitter

                            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                            Envoyer un mail d'un site en développement

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            • Editeur
                            • Markdown