IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Envoi de mail en langage C


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut Envoi de mail en langage C
    Bonsoir, aimant par dessus tout me lancer des défis en langage C, je tente en ce moment de créer un petit programme d'envoi de mails. Le principe est d'utiliser les sockets pour se connecter au port 25 d'un serveur SMTP. D'autre part, j'utilise SDL pour avoir une interface graphique un peu plus confortable que la console, ce qui nécessite de créer des fonctions pour afficher les caractères ou pour effectuer des saisies.
    Mais bref le problème se situe plutôt du côté de la requête SMTP : J'arrive à me connecter sans problème, j'envoie alors les données au serveur SMTP : EHLO, FROM, TO, DATA ... et j'écris la réponse du serveur dans un fichier .txt à chaque fois. Mais lors des tests (J'essaie de m'envoyer un mail sur mon adresse gmail) après l'envoi du corps du message, le serveur me répond systématiquement "500 5.5.2 bad chars in command" et pas le moindre mail dans ma boîte de réception. J'ai revu la syntaxe de la requête dans tous les sens mais rien n'y fait, je suis complètement à court de solutions. Voici le code de mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    int main(int argc,char *argv[])
    {
        srand(time(NULL));
        if(SDL_Init(SDL_INIT_VIDEO)!=0)     //Intro SDL
            return -1;
        SDL_Surface *ecran,*Fond,*caracteres[94],*messageConnexion,*CaracAdr[27],*Chiffres[10];
        SDL_Surface *MessageErreurConnex,*MessageOKConnex;
        SDL_Event event;
        SDL_Rect posFond,posErrConn,posOKConn;
        posFond.x=0;
        posFond.y=0;
        posErrConn.x=196;
        posErrConn.y=150;
        posOKConn.x=239;
        posOKConn.y=150;
     
        Uint16 choix,retourSaisie;
        char mailDest[50]="";
        char mailExp[50]="";
        char Objet[20]="";
        char Corps[TAILLECORPS]="";
        char ADR_SMTP[20]="";
        char Requete[1000]="";
        Uint32 tpsDebut,tpsActuel,chrono=0;
     
        WSADATA wsa;
        WSAStartup(MAKEWORD(2,2),&wsa);
     
        hostent *ip;
        sockaddr_in serv;
        SOCKET sock;
        int retour;
     
        SDL_WM_SetCaption("Envoi mails",NULL);       //Titre programme
        putenv("SDL_VIDEO_CENTERED=1");     	 //Fenêtre centrée
        ecran=SDL_SetVideoMode(800,600,32,SDL_HWSURFACE);       //Création fenêtre
     
        Fond=SDL_LoadBMP("Fond.bmp");
        messageConnexion=SDL_LoadBMP("messageConnexion.bmp");
        MessageOKConnex=SDL_LoadBMP("MessageOKConnex.bmp");
        MessageErreurConnex=SDL_LoadBMP("MessageErreurConnex.bmp");
     
        chargeCaracteres(caracteres,CaracAdr,Chiffres);           //Chargement des images caractères
     
        choix=Menu(ecran,caracteres);
        if(choix==1)        //L'utilisateur choisit de quitter le programme
        {
            SDL_Quit();
            return 0;
        }
        if(choix==0)	//L'utilisateur choisit d'envoyer un mail
        {
            retourSaisie=Saisie(ecran,Fond,caracteres,mailExp,mailDest,Objet,Corps,ADR_SMTP);
            if(retourSaisie==0)
            {
                SDL_Quit();
                return 0;
            }
        }
     
        SDL_BlitSurface(Fond,NULL,ecran,&posFond);       //Affichage message connexion
        afficheConnexion(ecran,messageConnexion,CaracAdr,ADR_SMTP);
        SDL_Flip(ecran);
     
        ip=gethostbyname(ADR_SMTP);
        sock=socket(PF_INET,SOCK_STREAM,0);     //Connexion au port 25 du serveur SMTP
        serv.sin_family=AF_INET;
        serv.sin_port=htons(25);
        memcpy(&serv.sin_addr,ip->h_addr,ip->h_length);
     
        retour=connect(sock,(struct sockaddr*)&serv,sizeof(serv));          //Connexion au serveur
        if(retour!=0)
        {
            SDL_BlitSurface(MessageErreurConnex,NULL,ecran,&posErrConn);
            SDL_Flip(ecran);
            return -2;
        }
        if(retour==0)
        {
            SDL_BlitSurface(MessageOKConnex,NULL,ecran,&posOKConn);
            SDL_Flip(ecran);
        }
     
        if(choix==0)
            RequeteSMTP(ecran,Fond,Requete,mailExp,mailDest,Objet,Corps,sock);   //Envoi mail
     
        SDL_Quit();
        return 0;
    }
    Voici le code de la fonction RequeteSMTP() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    void RequeteSMTP(SDL_Surface *ecran,SDL_Surface *Fond,char *Requete,char *mailExp,char *mailDest,char *Objet,char *Corps,SOCKET sock)
    {
        char reponse[70]="";
        FILE *f=fopen("test.txt","a+");
     
        send(sock,"EHLO orange.fr\r\n",sizeof("EHLO orange.fr\r\n"),0);
        recv(sock,reponse,sizeof(reponse),0);
     
        sprintf(Requete,"MAIL FROM: <%s>\r\n",mailExp);
        send(sock,Requete,sizeof(Requete),0);
        recv(sock,reponse,sizeof(reponse),0);
     
        sprintf(Requete,"RCPT TO: <%s>\r\n",mailDest);
        send(sock,Requete,sizeof(Requete),0);
        recv(sock,reponse,sizeof(reponse),0);
     
        send(sock,"DATA\r\n",sizeof("DATA\r\n"),0);
        recv(sock,reponse,sizeof(reponse),0);
     
        sprintf(Requete,"Subject: %s\r\n%s\r\n.\r\n",Objet,Corps);
        send(sock,Requete,sizeof(Requete),0);
        recv(sock,reponse,sizeof(reponse),0);
        fprintf(f,"%s",reponse);			//Réponse enregistrée dans test.txt
     
        send(sock,"QUIT\r\n",sizeof("QUIT\r\n"),0);
        recv(sock,reponse,sizeof(reponse),0);
     
        fclose(f);
    }
    Voilà, je ne vois vraiment pas ce qui ne va pas. Il me semble bien que la syntaxe pour l'envoi du corps du message est bonne : L'objet du mail, un retour à la ligne, le message lui-même, un retour à la ligne, un point et un dernier retour à la ligne.

    Merci par avance à celui qui m'aidera.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    send(sock,Requete,sizeof(Requete),0);
    Si tu écris cela, tu vas à chaque fois renvoyer la totalité du buffer, y compris, donc, ce qui ce trouve après la fin de chaîne et qui est complètement indéterminé. Utilise strlen() à la place de sizeof().

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Merci pour la suggestion, je viens de tester ta solution mais en vain (Toujours la même réponse du serveur et pas de mail reçu). Tu penses que le programme envoie d'autres caractères en plus ? Parce que j'y ai déjà pensé et j'ai essayé de résoudre le problème en concaténant "\0" avec la chaîne.

    J'ai oublié de préciser que j'étais sous Windows 8 et Code::Blocks

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    En vrac :

    • Il faut utiliser strlen() lors de de tes send() et sizeof() lors de tes recv() ;
    • Dans la fonction principale de ton programme, tu appelles la routines d'envoi de mail mais toutes les chaînes sont vides. Tu as pensé à les remplir ?
    • Il faut attendre d'avoir reçu les réponses du serveur, effectivement, mais il faut également être sûr de les avoir reçues en entier. Elles peuvent nécessiter plusieurs recv() consécutifs, même si c'est peu probable en pratique ;
    • Si tu utilises EHLO, le serveur SMTP peut te renvoyer des réponses sur plusieurs lignes, auquel cas le code à trois chiffres est suivi de « - » pour indiquer qu'au moins une ligne doit encore suivre ;

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Les chaînes sont remplies, c'est la fonction Saisie() qui s'en charge. Sinon je viens d'avoir une drôle de surprise : J'utilise une autre adresse mail comme adresse d'expéditeur, et je viens de voir dans la boîte mail correspondante 4 mails m'informant qu'un message n'avait pas pu être remis au destinataire, on peut au moins dire que c'est un progrès

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Il faut que tu écrives à l'écran les réponses du serveur que tu reçois, puisque tu les récupères déjà avec recv().

    Sinon, il se peut que certains serveurs n'aiment pas les adresses mails entre chevrons « <…> » lors des commandes MAIL FROM: et RCPT TO: mais c'est peu probable ici.

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Il y a bien ce fameux tiret dont tu parles, voici ce que dit le serveur après l'envoi du corps du message :

    500 5.5.2 bad chars in command
    00000
    250-ENHANCEDSTATUSCODES

    Edit : En utilisant 3 recv(), le serveur ne répond plus la même chose :

    450 4.7.0 too many invalid commands (closing session)E250 OK250-AUTH LOGIN PLAIN
    450 4.7.0 too many invalid commands (closing session)E250 OK250-AUTH LOGIN PLAIN
    450 4.7.0 too many invalid commands (closing session)E250 OK250-AUTH LOGIN PLAIN


  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Il faut vérifier les codes de retour de send() et recv(). Il n'y a aucune raison pour que le serveur t'envoie trois fois de suite la même chaîne. À la place, il est fort probable que ta connexion se soit refermée, que les appels échouent, et que ce que tu vois soit en fait le dernier message correctement reçu (toujours le même, donc).

    Fends-toi de l'écriture de deux fonctions envoyer() et recevoir() à la place de send() et recv() pour effectuer une fois pour toutes les tâches de maintenance suivantes :
    • Mesurer la taille de la ligne avec strlen() lors d'un envoi ;
    • Vérifier le code de retour de chacune des fonctions ;
    • Éventuellement cumuler les arrivées ;
    • Écrire directement les réponses dans le log ou à l'écran sans avoir à faire un printf() explicite à chaque fois.


    Tu gagneras beaucoup de temps si tu prends 15 minutes maintenant à faire cela avant de revenir au problème principal.

    Ensuite, tu ne peux pas transmettre ce que tu veux dans le corps du message. Il y a certaines règles à respecter, et certains caractères doivent être dûment « échappés ». C'est notamment le cas du point unique sur une ligne. Cette séquence sert à indiquer qu'on a fini de transmettre. Si tu veux l'envoyer telle quelle dans le corps du message, tu es obligé de l'exprimer d'une manière différente.

    Je te conseille également d'utiliser un logiciel style netcat ou un équivalent pour te mettre à l'écoute d'un port sur lequel tu feras se connecter ton programme. Tu pourras ainsi voir en une seule fois ce qui est effectivement transmis et s'il y a des choses manifestement incorrectes sur la forme ou sur le fond.

    EDIT : Info importante : send() et recv() sont faites pour transmettre une certaine quantité de données qui n'est pas forcément en soi une chaîne de caractères. Ça veut dire qu'en aucun cas, elles te déposeront le zéro final. recv() te renvoie, si elle réussit, le nombre d'octets correctements reçus et déposés dans le buffer. C'est à toi de faire en sorte de lire exactement la bonne taille ou de déposer toi-même le zéro final si tu veux faire un printf() directement dessus à la suite, sinon tu verras la fin des données précédentes, partiellement écrasées par le dernier appel.

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Merci pour tes conseils, mais je viens finalement de résoudre le problème, ou presque : En fait, j'ai tenu compte de ta remarque comme quoi il fallait peut-être guetter d'autres réponses du serveur, et en effet le serveur envoie bien 3 réponses après la requête EHLO. Après avoir ajouté une boucle de 3 recv() après le send(), j'ai constaté que le serveur envoyait le code 354 en réponse à la commande DATA (Ce qui correspond) et "221 2.0.0 mwinf5d29 ME closing connection" après l'envoi du corps du message. Ceci signifie que le mail a bien été transmis ; pourtant, je ne reçois toujours rien dans ma boîte mail

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Voir par exemple : http://www.greenend.org.uk/rjk/tech/smtpreplies.html

    354 est le code t'invitant à saisir le corps du mail ;
    221 est un code indiquant que le serveur referme la connexion à son initiative et que donc, en l'occurrence, tu t'es fait raccrocher au nez.

    Tu es censé obtenir un code 250 (« Ok » général) après le point final et garder une connexion persistante qui te permet d'envoyer éventuellement un autre mail dans la foulée si tu le souhaites.


    D'autre part, trois recv() successifs ne garantissent nullement que tu vas lire trois lignes à la suite et que tu vas les attendre. Si le serveur est suffisamment rapide, il se peut que tu reçoive la totalité des trois lignes dans le premier recv().

  11. #11
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Pour être plus précis, le serveur répond 250 après l'envoi du mail et 221 après la commande QUIT.
    Selon toi il faudrait attendre que le serveur ait fini de répondre pour sortir de la boucle donc.

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Petit détail : qu'utilises-tu pour récupérer les mails que tu t'es envoyé ?

    J'ai eu des soucis avec le Zimbra de free.fr, par exemple. Je lis mes mails avec un client courrier, qui les récupère à travers à travers une connexion POP3 (comme j'archive tous mes mails, je fais en sorte qu'ils ne restent jamais trop longtemps sur le serveur). Avec IMP, pas de problème : quel que soit le dossier dans lequel il a lui-même classé le mail à son arrivée, ils sont tous lus en une fois par la connexion POP, et donc à la fois rapatriés et supprimés. Par contre, depuis qu'on m'a invité à passer à Zimbra, celui-ci applique un anti-spam et les classe dans un dossier idoine qui, lui, n'est plus visible depuis la connexion POP !

    Comme je n'utilise pratiquement jamais le webmail sauf quand je suis en déplacement, et que par ailleurs mon client courrier applique son propre anti-spam même s'il est capable de réagir aux courriers marqués comme tels par le serveur, il m'est arrivé de rater deux ou trois mails importants avant que j'aie l'intuition d'aller vérifier de ce côté-là.

    Vérifie si tu n'es pas dans la même situation.
    Si ce n'est pas le cas, j'aimerais avoir le libellé exact du message se trouvant après le code « 250 » qui suit l'envoi du corps de ton mail.

  13. #13
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Je passe par mon compte Gmail, non aucun message dans la catégorie spam. Le serveur répond exactement : "250 2.0.0 bsgQ1o00B2cyZtE03sgS61 mail accepted for delivery OK 250-AUTH LOGIN PLAIN"

  14. #14
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Le mail semble effectivement avoir été accepté (il n'est pas exclu qu'Orange les détruise silencieusement s'il estime que c'est du spam, cela dit, mais c'est à vérifier). Par contre, le « OK » et tout ce qui suit est un résidu des précédents recv(). Il faut gérer ton buffer proprement.

  15. #15
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Je pense aussi que le serveur SMTP de Orange prend cela pour du spam. Bref je viens de parvenir plus ou moins à mon objectif car je suis passé chez mes parents qui sont chez Free et j'ai réussi à envoyer un mail sur un compte Hotmail en me connectant au serveur SMTP de Free, mais ça ne marche toujours pas sur mon compte Gmail, je pense qu'il doit y avoir une sécurité qui détruit le mail comme tu dis.

  16. #16
    Invité
    Invité(e)
    Par défaut
    oui la plupart des FAI bloque le port 25 sortant dont orange , si mes souvenir sont bon tu peut passer par un serveur smtp ou par authentification ou smtp avec ssl

  17. #17
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Citation Envoyé par yohann2008 Voir le message
    oui la plupart des FAI bloque le port 25 sortant dont orange , si mes souvenir sont bon tu peut passer par un serveur smtp ou par authentification ou smtp avec ssl
    Ce n'est pas le problème qui nous occupe ici, puisqu'il contacte le serveur de son fournisseur et que la connexion est correctement établie.

    Et puisqu'on en parle, c'est une bonne chose de filtrer — par défaut — le port 25. Par contre, le filtrer de force sans possibilité pour l'utilisateur de lever cette limitation, ça va à l'encontre même du service censé être rendu par le fournisseur.

  18. #18
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Quand tu travail sur un protocole réseau, il est généralement bien d'utiliser :
    • telnet (ou équivalent) : pour envoyer/recevoir des paquets à la main et ainsi tester le serveur/client
    • whiresark (ou équivalent) : pour savoir exactement ce qui est envoyé/reçu sur l'interface réseau, en effet, si tu as un bug dans ton programme, tu peux penser que tu envois "toto" mais il se peut que tu envoie en fait "tot" ou "toto5sd45d45"

Discussions similaires

  1. Envoi de mail au format html
    Par Mephyston dans le forum C++Builder
    Réponses: 2
    Dernier message: 22/01/2004, 12h29
  2. Envoi de mail au format Rich-Text
    Par LineLe dans le forum ASP
    Réponses: 4
    Dernier message: 29/10/2003, 16h27
  3. envoi de mail avec attachement de fichier
    Par GMI3 dans le forum Modules
    Réponses: 2
    Dernier message: 24/09/2003, 11h22
  4. Outlook ne se ferme pas après un envoi de mail
    Par Joke dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/06/2003, 17h32
  5. envoi de mail, protocol SMTP langage C
    Par Heimdall dans le forum Développement
    Réponses: 2
    Dernier message: 23/05/2003, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo