begin process at 2012 05 30 09:56:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

smtp en socket


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

smtp en socket

mardi 24 mai 2005 à 02:13:43 | smtp en socket

XKaliBur

Membre Club
J'ai essayer de faire le plus simple possible mais ça marche pas... est-ce que quelqu'un aurais une idée...
Parce que quand je le fait en telnet ça marche donc le smtp et le port son bon...
Ou alors c'est que j'ai vraiment rien compris aux sockets... ou à l'smtp...


#include <winsock2.h>                        /*socket*/
#include <stdio.h>                            /*printf*/
#pragma comment(lib, "ws2_32.lib")

void main()
{
    /* on initialise notre winsock */
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);
    /* fin d'initialisation */

    /* on construit notre socket */
    SOCKET sock;
    SOCKADDR_IN sin;
    char buff[BUFSIZ];

    sin.sin_addr.s_addr = inet_addr("81.255.54.9"); /*smtp.laposte.net*/
    sin.sin_family      = AF_INET;
    sin.sin_port        = htons(25);
    sock = socket(AF_INET,SOCK_STREAM,0);
    bind(sock, (SOCKADDR *)&sin, sizeof(sin));
    /* fin de la construction du socket */

    /* on connecte le socket*/
    connect(sock, (SOCKADDR *)&sin, sizeof(sin));

    /* envoi des messages */
    sprintf(buff, "HELO hello\n");
    send(sock, buff, sizeof(buff), 0);
    printf("%s",buff);

    sprintf(buff, "MAIL FROM: <*****@hotmail.com>\n");
    send(sock, buff, sizeof(buff), 0);
    printf("%s",buff);

    sprintf(buff, "RCPT TO: <*****@laposte.net>\n");
    send(sock, buff, sizeof(buff), 0);
    printf("%s",buff);

    sprintf(buff, "DATA\n");
    send(sock, buff, sizeof(buff), 0);
    printf("%s",buff);

    sprintf(buff, "subject: test\n");
    send(sock, buff, sizeof(buff), 0);
    printf("%s",buff);

    sprintf(buff, "test\n");
    send(sock, buff, sizeof(buff), 0);
    printf("%s",buff);

    sprintf(buff, ".\n");
    send(sock, buff, sizeof(buff), 0);
    printf("%s",buff);

    sprintf(buff, "QUIT\n");
    send(sock, buff, sizeof(buff), 0);
    printf("%s",buff);
    /* fin de l'envoi */
}
mardi 24 mai 2005 à 06:51:41 | Re : smtp en socket

Arnotic

Administrateur CodeS-SourceS
Regarde dans mes sources tu as des exemples de gestion du protocol SMTP avec fichier joint.

@+
Arnotic,
Admin CS, MVP Visual C++
mardi 24 mai 2005 à 10:02:40 | Re : smtp en socket

cosmobob

Réponse acceptée !
salut;
fais attention tu utilises mal sprintf et send.
    sprintf(buff, "%s", "HELO hello\n");
    send(sock, buff, strlen(buff), 0);


pour sprintf ca aurait planté le jour au tu aurais essayé d'envoyer un message qui contient un % (et a ce moment t'aurais eu du mal a piger).
c'est sans doute a cause du send que ce que tu as fait ne marchait pas : tu envoies tout le buffer, alors que les derniers octets sont remplis avec des caracteres quelconques que le serveur smtp ne doit pas comprendre. dans le cas ou tu veux envoyer HELO hello\n, tu n'as que 11 caracteres a envoyer, or ton sizeof(buff) dit a send d'envoyer BUFSIZ caracteres, tandis que strlen(buff)  n'en envoie bien que 11.

a+



Cette discussion est classée dans : printf, sin, sock, sizeof, buff


Répondre à ce message

Sujets en rapport avec ce message

pb socket [ par surfeurnet ] voici mon programme qui a pour l'instant pour unique but de se connecter à un serveur :# include # include # pragma comment (lib,"w32_32.lib")char ip, erreur 10038 [ par made_in_france ] Hello ! j'ai un probleme avec la fonction bind de mon programme. En effet cette fonction me renvois l'erreur 10038 « attempted ». Est ce que quelqu'un SVP besoin d'aide [ par seito ] [size=5] seito [/size]j'ai déveloper une apploication pour transferer des fichiersla reception est parfaite pourtant à l'envoie ça me cause des tas de transfert de fichier sous MFC [ par seito ] [size=5] seito [/size]bonjours,j'aimerais déveloper une application de transfert de fichier sous MFC avec Visual C++ 6.le code que j'ai conçus marche Probleme de socket (envoi) [ par SnOOpss ] Salut !!!Voila g realisé nn programme pour m'envoyer des socket a moi meme ( c pr tester) *********Client******** #include #pragma comment(lib, "ws2_3 Problm de Linkage [ par Stormy ] J'ai ce code à compiler sous MSVC 6. Or, bien que mes options de Link soient justes (il me semble), j'obtiens une erreur de linkage:fatal error C1083: [C] Probleme Socket [ par firemax ] Voila le code : En gros je sais pas qu'elle est le probleme et je n'est aucun message d'erreur :D [code]#include "lib.h" int main() {     int sock Socket en C [ par RM50Man ] WSADATA ws;                    WSAStartup(MAKEWORD(2,0), &ws);              &n prb a la compilation vous vc++ [ par shadow1779 ] Bonjour,j'ai tenté de faire un programme en C utilisant les sockets, la personne qui lance son programme choisi elle meme l'ip et le port a se connect


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales