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

Développement Discussion :

envoi de mail, protocol SMTP langage C


Sujet :

Développement

  1. #1
    Membre régulier
    Homme Profil pro
    Collégien
    Inscrit en
    Mars 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mars 2003
    Messages : 192
    Points : 87
    Points
    87
    Par défaut envoi de mail, protocol SMTP langage C
    bonjour, je fais un petit programme en C permettant d'envoyer des mails via un serveur smtp

    seulement parfois ça marche nickel, et parfois ça bloque, d'après les réponses du serveur que j'imprime a l'écran, ça bloque soit lors de l'envois de MAIL FROM (réponse 220...puis plus rien...) soit après la réponse a DATA (354 start input mail puis plus rien)

    voici mon code :

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    #include <winsock2.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    void suppr_n&#40;char *ptr&#41;
    &#123;
       char *p=strchr&#40;ptr,'\n'&#41;; //recherche le '\n' dans ptr
          if&#40;p!=NULL&#41;
          *p=0;
    &#125;
    
    int main&#40;void&#41;
    &#123;
    WSADATA WSAData;
    int my_sock;
    struct sockaddr_in sin;
    char reverse_path&#91;255&#93;;
    char destinat&#91;255&#93;;
    char from&#91;255&#93;;
    char subject&#91;255&#93;;
    char to&#91;255&#93;;
    char message&#91;1024&#93;;
    char buffer&#91;9120&#93;;
    int result_connect;
    char c;
    char numIP&#91;18&#93;="62.62.156.27";
    int port=25;
    
    
    printf&#40;"tapez l\'adresse du correspondant &#58; \n"&#41;;
    fgets&#40;buffer,sizeof&#40;buffer&#41;,stdin&#41;;
    suppr_n&#40;buffer&#41;;
    sprintf&#40;destinat,"RCPT TO&#58;<%s>",buffer&#41;;
    sprintf&#40;to,"TO&#58;<%s>",buffer&#41;;
    
    printf&#40;"\ntapez l\'adresse de l\'expediteur\n"&#41;;
    fgets&#40;buffer,sizeof&#40;buffer&#41;,stdin&#41;;
    suppr_n&#40;buffer&#41;;
    sprintf&#40;reverse_path,"MAIL FROM&#58;<%s>",buffer&#41;;
    
    printf&#40;"tapez le champs from &#58; \n"&#41;;
    fgets&#40;buffer,sizeof&#40;buffer&#41;,stdin&#41;;
    suppr_n&#40;buffer&#41;;
    sprintf&#40;from,"FROM&#58;<%s>",buffer&#41;;
    
    printf&#40;"\ntapez le sujet du mail &#58; \n"&#41;;
    fgets&#40;buffer,sizeof&#40;buffer&#41;,stdin&#41;;
    suppr_n&#40;buffer&#41;;
    sprintf&#40;subject,"SUBJECT&#58;%s",buffer&#41;;
    
    printf&#40;"\ndestination &#58; %s",destinat&#41;;
    printf&#40;"\nreturn &#58; %s",reverse_path&#41;;
    printf&#40;"\nfrom &#58; %s",from&#41;;
    printf&#40;"\nto &#58; %s",to&#41;;
    printf&#40;"\nsujet &#58; %s",subject&#41;;
    printf&#40;"\ncorps&#58; %s",buffer&#41;;
    
    sprintf&#40;buffer,"voici mon message"
                        "\r\n"&#41;;
    
    sprintf&#40;message,
                    "EHLO <212.30.xxx.xxx>\r\n"
                    "%s"
                    "\r\n"
                    "%s\r\n"
                    "DATA \r\n"
                    "%s\r\n"//to
                    "%s\r\n"//from
                    "%s\r\n"//sujet
                    "\r\n"//separation entete corps
                    "%s\r\n"//corps du message
                    ".\r\n"//indicateur de fin transaction smtp
                    "QUIT\r\n"
                    ,reverse_path,destinat,to,from,subject,buffer&#41;;
    
    printf&#40;"\n\n\n%s\n\n\n",message&#41;;
    
    WSAStartup&#40;MAKEWORD&#40;2,0&#41;, &WSAData&#41;;
    
    
    
       sin.sin_addr.s_addr	= inet_addr&#40;numIP&#41;;
    	sin.sin_family		= AF_INET;
    	sin.sin_port		= htons&#40;port&#41;;
       my_sock = socket&#40;AF_INET,SOCK_STREAM,0&#41;;
     
       printf&#40;"connexion au port %d...\n",port&#41;;
       result_connect=connect&#40;my_sock,&#40;SOCKADDR*&#41;&sin,sizeof&#40;sin&#41;&#41;;
    
       if&#40;result_connect==0&#41;
       &#123;
    	   
    	   printf&#40;"connexion reussie au port %d  \n\n",port&#41;;
    	   
          send&#40;my_sock,message ,sizeof&#40;message&#41;-1, 0&#41;;
    	  
           while&#40;&#40;recv&#40;my_sock, &c, 1, 0&#41;&#41;==1&#41;
     	   &#123;
    		 	   putchar&#40;c&#41;;
    	   &#125;
           	   
    	   closesocket&#40;my_sock&#41;;
    	   printf&#40;"connexion fermee\n"&#41;;
    &#125;
    else
    printf&#40;"erreur de connexion\n"&#41;;
    
    WSACleanup&#40;&#41;; 
    system&#40;"pause"&#41;;
    
    	return 0;
    &#125;
    --
    Heimdall

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    Bonjour, je suis moi aussi en train de dévepper un client SMTP mais en java. J'ai le même problème lorsque je change de serveur. J'ai remarqué que c'est dû au fait qu'après l'instruction EHLO , le serveur envoie plus ou moins de réponse suivant sa configuration.
    Essaie avec HELO à la place normalement tu n'aura plus le problème d'instabilité.
    Voilà tiens moi au courant...

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Puis je voir le code d'envoi en java
    merci

Discussions similaires

  1. Problème d'envoie de mail par SMTP
    Par yass dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 12/09/2008, 16h45
  2. Access 97 : Envoi de mail par SMTP sans Outlook
    Par mr_foxy dans le forum Access
    Réponses: 2
    Dernier message: 16/03/2006, 14h45
  3. [C#] Problème d'envoi de mail avec SMTP local
    Par bossun dans le forum ASP.NET
    Réponses: 10
    Dernier message: 27/02/2006, 11h04
  4. envoi de mail sans smtp
    Par fredo2009 dans le forum Modules
    Réponses: 5
    Dernier message: 09/01/2006, 18h20
  5. [Mail] Envoi de mail par SMTP ?
    Par Borami dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2006, 12h26

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