Aide Protocole smtp

Résolu
Bonjour à tous,

alors voilà je viens de terminer un petit programme en langage C sous windows, qui envoie un mail à une adresse, comme par exemple adresse_bidon@yahoo.fr

Aucun message d'erreur dans la console, le mail est bien reçu, avec le titre du mail, le destinataire, tout ca tout ca, sauf le contenu du mail.
Je comprends pas pourquoi le mail affiche : "Ce message est vide" lorsque je le reçois, alors qu'il devrait y avoir écris du texte.

Je continue de chercher, mais si une âme charitable pouvait m'indiquer dans mon code, la partie du protocole smtp qui déconne (à mon avis le problème viens de la vu que le mail est bien reçu), ca m'aiderait :).

 int Port = 587;

 char serveur[] = "smtp.mail.yahoo.fr";

 char lemail[] = "EHLO localhost\r\n"
                "AUTH PLAIN\r\n"
                "xxxxxxxxx Mon code d'authentification xxxxxx\r\n"
                "MAIL FROM:<adresse_bidon@yahoo.fr>\r\n"
                "RCPT TO:<adresse_non_existante@yahoo.fr >\r\n"
                "DATA\r\n"
                "Subject: Mail de test\r\n"
                "FROM: Me <adresse_bidon@yahoo.fr>\r\n"
                "TO: You <adresse_non_existante@yahoo.fr>\r\n"
                "Test\r\n"
                ".\r\n"
                "QUIT\r\n\r\n";


Ici par exemple le mail devrait contenir "Test", mais il est vide...
Hormis le sujet etc...

Merci de votre aide.

8 réponses

  1. Modérateur
    Salut,

    Une suggestion remonter from et to au dessus de data et donc avoir le texte derrière le sujet :

                   "DATA\r\n"  
                   "Subject: Mail de test\r\n"  
                    "Test\r\n"   
                    ".\r\n"

    cdlt

    ps : d'ailleurs from et to ne semblent pas être des commandes smtp

    Un étranger, c'est un ami qu'on n'a pas encore rencontré.
    1. Merci pour la suggestion mais ca ne fonctionne pas.

      Ca fait "502 Command not implemented", du coup le mail atteri dans les spams oulala :P

      Et il est toujours vide ><
      1. Modérateur
        from et to ne sont pas des commandes smtp, mais des champs à mettre derrière data, avant subject.

        as-tu essayé un mail à la main via : telnet smtp.mail.yahoo.fr 25

        pour vérifier par exemple que la fin de data c'est bien un point.

        1. "from et to ne sont pas des commandes smtp, mais des champs à mettre derrière data, avant subject."

          Oui, tu as raison, d'ailleurs je me demande si il ne faut pas mettre une "balise" comme cela pour indiquer le contenu du mail. Je met bien Subject pour indiquer le titre du mail alors c'est peut-être pareil avec le contenu.

          J'utilise pas le port 25 j'arrive pas à me connecter au serveur avec ce port.

          Par contre sur le 587 cela fonctionne et il m'indique bien que la fin est un '.'

          Voici ce que m'affiche la console si ca peut t'aider

          220 smtp142.mail.uk1.yahoo.com ESMTP
          
          250-smtp142.mail.uk1.yahoo.com
          250-AUTH LOGIN PLAIN XYMCOOKIE
          250-PIPELINING
          250-SIZE 41697280
          250 8BITMIMI
          334 ok, go on
          235 OK, go ahead
          250 OK, completed
          250 OK, completed
          354 Start Mail. End with CRLF.CRLF
          
          250  OK, completed
          
          221 Service Closing transmission
          
          1. Modérateur
            Le port 25 doit être bloqué par ta box, c'est pourquoi il y a un port échappatoire.

            Dans les exemples que j'ai vu il n'y a pas de balise pour le texte, c'est peut être particulier à yahoo.

            Dans la commande via telnet tu as le texte ?

            Un étranger, c'est un ami qu'on n'a pas encore rencontré.
            1. Pour la commande : telnet smtp.mail.yahoo.fr 25, il m'indique "Impossible d'ouvrir une connexion à l'hôte, sur le port 25: Echec lors de la connexion"

              J'ai essayé de changer la ligne censé mettre fin au Data :

              en mettant deux lignes lignes blanches, "\r\n\r\n", le programme boucle infini, ou bien timeout, (ou alors je suis vraiment pas patient xd)

              par contre j'ai remarqué que en mettant ca "\r\n\r\n.\r\n\r\n", le mail contient un saut à la ligne. ><
              Sinon il est toujours vide.
              1. Modérateur
                Et en mettant une ligne banche entre le sujet et le texte ?
                1. Youhou ca fonctionne :P ! MERCI =** !

                  Le texte s'affiche correctement dans le mail.
                  Il est un peux capriceux quand même, juste pour une ligne blanche.

                  Apparement il n'apprécie pas que le contenu et le subject soit "collé" l'un à l'autre.

                  En tout cas merci je vais pouvoir avancer :)