Pbm de client SMTP

 
Poster un nouveau sujet   Répondre au sujet    iprelax.fr Index du Forum -> SMTP
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Alexb
dummy mioche
dummy mioche


Inscrit le: 24 Jan 2004
Messages: 4

MessagePosté le: Sam Jan 24, 2004 7:21 pm    Sujet du message: Pbm de client SMTP Répondre en citant

Salut,

je me suis inspiré d'un des exemples de client SMTP du site qui envoyait des fichiers simplement pour envoyer des petits messages présents dans le corps de mon programme en C.
J'arrive quand ça veut bien marcher à me les envoyer mais j'ai toujours au moins 3 pbm de réponse du serveur pour les commandes MAIL FROM, DATA et enfin QUIT.
Les messages sont du type 500 Syntax error, command unrecognized
et une autre 502 ou 503, je ne me souviens plus.
Alors quelqu'un pouvait me répondre, ça m'arrangerais bien !
Smile Merci d'avance.
Le code :
Code:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define DEBUG 0 /* Attention il y des pb si le msg envoye contient des % */

#define PACKET_SIZE  1024

/* Signature des fonctions globales*/
int main (int argc, char *argv[]);
void smtp_receive();
void smtp_send(char* msg);

/*Variables globales*/
int sock = -1;
char server_name[] = "smtp.tiscali.fr";  /* nom du host du serveur */
int port = 25;

/* Chaine de caracteres des messages*/
char s[2048];
int n = 0;
/*Buffer de reception des messages du serveur smtp*/
char buff[100]; 

int main (int argc, char *argv[])
{
    /* addresse de la socket */
    struct sockaddr_in serverSockAddr;
    /* description du host serveur */
    struct hostent *serverHostEnt; 
    /* addr du serveur */
    unsigned long hostAddr;                       

    /*   if ( argc == 2 ) filename = argv[1];
    else filename = NULL;*/ /* use stdin */

    bzero(&serverSockAddr,sizeof(serverSockAddr));
    /* converti l'adresse ip 9.100.1.1 en entier long */
    hostAddr = inet_addr(server_name);

    if ( (long)hostAddr != (long)-1)
            bcopy(&hostAddr,&serverSockAddr.sin_addr,sizeof(hostAddr));
    else                                /* si on a donne un nom  */
    {
            serverHostEnt = gethostbyname(server_name);
            if (serverHostEnt == NULL)
            {
                    printf("probleme gethost\n");
                    exit(0);
            }
            bcopy(serverHostEnt->h_addr,&serverSockAddr.sin_addr,
                  serverHostEnt->h_length);
    }

    /* host to network port  */
    serverSockAddr.sin_port = htons(port);
    /* AF_*** : INET=internet */
    serverSockAddr.sin_family = AF_INET;     
    /* creation de la socket */

    if ( (sock = socket(AF_INET,SOCK_STREAM,0)) < 0)
    {
            printf("probleme de creation de socket client\n");
            exit(0);
    }

    /* requete de connexion */
    if(connect(sock,(struct sockaddr *)&serverSockAddr,
               sizeof(serverSockAddr))<0)
    {
            printf("probleme de demande de connection\n");
            exit(0);
    }

    smtp_receive();
 
    /* Identification client-serveur */
    smtp_send("HELO ALEX_PC\r\n");
    smtp_receive();
   
    /* Specification de l'expediteur */
    smtp_send("MAIL FROM:<a@iie.cnam>\r\n");
    smtp_receive();
 
    /* Specification du destinataire */
    smtp_send("RCPT TO:<autre@libertysurf.fr>\r\n");
    smtp_receive();
 
    /* Envoi de l'en-tete et du corps message */
    smtp_send("DATA");
    smtp_receive();
 
    smtp_send("Subject: Mon premier client SMTP !\r\n");
    smtp_send("From: Alex\r\n");
    smtp_send("Si je suis là, c'est que ça a marché mon pote !!!!!!!!!\r\n");
    smtp_send("\r\n.");
    smtp_receive();

    /* Terminaison de la session smtp */
    smtp_send("QUIT");
    smtp_receive();

    /* fermeture de la connection */
    shutdown(sock,2);
    close(sock);
    return 0;
}

/* Fonction de reception des informations du serveur*/
void smtp_receive()
{
    int n = recv(sock, buff, sizeof(buff), 0);   
    buff[n] = 0;
    sprintf(s, "%s\n", buff); 
    printf(s);
    printf("--------------------------------------------------\r\n");
}

/* Fonction d'emission des requetes vers le serveur*/
void smtp_send(char* msg)
{
   sprintf(s, "%s\r\n", msg); 
   printf(s);
   send(sock, s, strlen(s), 0); 
}


_________________
C'est chaud !!!!!!!!!!!!!!
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Salemioche
salemioche
salemioche


Inscrit le: 05 Avr 2002
Messages: 350
Localisation: FR- BIOT

MessagePosté le: Sam Jan 24, 2004 7:30 pm    Sujet du message: Répondre en citant

tu envoies 2 fois : \r\n
_________________
Creer son site - Hebergement - Jumeaux
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Yahoo Messenger MSN Messenger
Alexb
dummy mioche
dummy mioche


Inscrit le: 24 Jan 2004
Messages: 4

MessagePosté le: Lun Jan 26, 2004 1:15 am    Sujet du message: Répondre en citant

Salut,

merci beaucoup, je n'ai plus de messages d'erreur grâce à toi : c'était vraiment une faute bidon mais que je n'avais pas vu car pour les autres commandes telles que le MAIL FROM, ceci ne semblait pas avoir d'incidence ! J'ai donc retiré tous les "\r\n" quand je fais smtp_send("ma_commande") mais par contre je ne reçois pas mon message "Si je suis là, c'est que ça a marché mon pote !!!!" donc il y a encore un hic !

Je fais :
Code:

 smtp_send("Si je suis là, c'est que ça a marché mon pote !!!!");
 smtp_send(".");

Sad
_________________
C'est chaud !!!!!!!!!!!!!!
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Alexb
dummy mioche
dummy mioche


Inscrit le: 24 Jan 2004
Messages: 4

MessagePosté le: Lun Jan 26, 2004 11:17 am    Sujet du message: Répondre en citant

A nouveau salut,

plutôt que d'utiliser "smtp.tiscali.fr", j'ai essayé "smtp.wanadoo.fr", et là, tout arrive comme il faut donc je ne sais pas ce qui cloche avec Tiscali !
Surprised
_________________
C'est chaud !!!!!!!!!!!!!!
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Salemioche
salemioche
salemioche


Inscrit le: 05 Avr 2002
Messages: 350
Localisation: FR- BIOT

MessagePosté le: Lun Jan 26, 2004 11:23 am    Sujet du message: Répondre en citant

lire ca :

http://forum.salemioche.com/viewtopic.php?t=59
_________________
Creer son site - Hebergement - Jumeaux
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Yahoo Messenger MSN Messenger
Alexb
dummy mioche
dummy mioche


Inscrit le: 24 Jan 2004
Messages: 4

MessagePosté le: Lun Jan 26, 2004 7:33 pm    Sujet du message: Répondre en citant

Encore merci, une fois de plus !
Maintenant, je crois que tout est beaucoup plus clair.
Surprised Laughing
_________________
C'est chaud !!!!!!!!!!!!!!
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    iprelax.fr Index du Forum -> SMTP Toutes les heures sont au format CET (Europe)
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
Affilzen SARL : Mention légale