[Sockets] Comment envoyer un mail ?

DamianC Messages postés 8 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 20 février 2005 - 12 févr. 2005 à 18:11
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 14 févr. 2005 à 16:57
Salut !

Cela fait déjà plusieurs jours que j'essaie de créer un programme (en console) pour envoyer des mails mais je n'y arrive pas.

C'est pour ça que je pose la question ?

12 réponses

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
12 févr. 2005 à 18:58
as-tu regarder les différentes sources du site? et si oui, les utilises-tu bien?
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
DamianC Messages postés 8 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 20 février 2005
12 févr. 2005 à 19:24
Nan j'ai rien trouvé. Je ne programme pour l'instant qu'en console.



Merci quand meme
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
12 févr. 2005 à 20:21
Salut DamianC,

quand tu cherches qq chose sur le site, il faut que tu te dises que tu ne trouveras pas exactement ce que tu souhaites. Par contre tu trouveras des bouts de code qui te seront utiles par ci par là.
Par exemple, sur le protocole POP3 pour l'envoye de mails et d'autres sources sur l'utilisation sockets (même en mode console).
Donc cherche plutôt à décomposer le programme que tu souhaites faire pour mieux cibler les recherches.

YOYO, @+.
YOYO
0
DamianC Messages postés 8 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 20 février 2005
12 févr. 2005 à 20:48
Merci de ton conseil yoyo269 !



Mais il me semble que le protocole pop3 est utilisé pour recevoir le courier tandisque le smtp et le protocole pour envoyer.



Voila a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
12 févr. 2005 à 21:04
Bien vu DamianC,

t'as bien fait de le préciser.
Bon courage.

YOYO, @+.
YOYO
0
DamianC Messages postés 8 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 20 février 2005
12 févr. 2005 à 21:28
Voila j'ai trouvé ce code :





#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")





void main()

{

WSADATA WSAData;

WSAStartup(MAKEWORD(2,0), &WSAData);



SOCKET sock;

SOCKADDR_IN sin;

sin.sin_addr.s_addr = inet_addr("smtp.laposte.net"); //Serveur a definir ici

sin.sin_family = AF_INET;

sin.sin_port = htons(25);

sock = socket(AF_INET,SOCK_STREAM,0);





if(connect(sock,(SOCKADDR*)&sin,sizeof(sin))==0)

{

send(sock, "HELO smtp\r\n", 11, 0);

send(sock, "MAIL From: <dede@yahoo.fr>\r\n", 28, 0);

send(sock, "RCPT To: <dcortes@hispeed.ch>\r\n", 36, 0);

send(sock, "DATA\r\n", 8, 0);

send(sock, "Subject: Test !!!\r\n\r\n Test\r\n.\r\n", 56, 0);

send(sock, "QUIT\r\n", 6, 0);

}





closesocket(sock);

WSACleanup();



}





Mais il n'a pas l'air de fonctionner.



- Je me demande si la déclaration de l'adresse du smtp est bonne ?

- Si il ne faut pas entrer un login et un pass pour pouvoir envoyer avec le smtp ?



Voila merci d'avance
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
12 févr. 2005 à 21:50
Désolé mais je peux pas t'aider dans ce domaine.
Je n'y connais rien aux protocoles des mails.
Cherche plutôt plusieurs sources et compare les entre elles.
Comme ça tu pourras récupérer les bases essentielles au bon fonctionnement.
Et aussi, essaye quand même un peu de réfléchir par toi même.
Si tout le monde posait une question dès qu'il a le moindre problème, le forum serait inondé.

YOYO, @+.
YOYO
0
DamianC Messages postés 8 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 20 février 2005
12 févr. 2005 à 22:00
lol t'es un petit comique, vi c'est vrai je suis un peu feignasse dans
les bords mais au debut de la semaine je cherchais comme un malade mais
la je commence à me calmer
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
12 févr. 2005 à 22:25
Je connais ça. On a l'impression que la tête va exploser et on arrive plus à rien.
Je crois que tout le monde y a déjà eu droit à ça.
Le mieux c'est faire un petit break et chercher sur autre chose, sinon la plupart du temps on tourne en rond.

YOYO, @+.
YOYO
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 févr. 2005 à 22:32
Salut,
inet_addr demande une adresse ip (4 nombres avec des points).
Pour résoudre une adresse comme smtp.laposte.net il faut utiliser gethostbyname ou getaddrinfo par exemple.
Aussi, envoyer des commandes sans ce soucier des réponses du serveur c'est pas une bonne idée.
Enfin, fait attention au nombre d'octet que tu envoies dans tes commandes:
send(sock, "DATA\r\n", 8, 0); // 6 octets a envoyer
0
DamianC Messages postés 8 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 20 février 2005
14 févr. 2005 à 13:56
Merci à toi aardman !



Mais malheureusement je n'y arrive toujours pas :



#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")



int main()

{

WSADATA WSAData;

WSAStartup(MAKEWORD(2,0), &WSAData);



SOCKET sock;

SOCKADDR_IN sin;

sin.sin_family = AF_INET;

gethostbyname("smtp.dplanet.ch");

sin.sin_port = htons(25);

sock = socket(AF_INET, SOCK_STREAM, 0);





if(connect(sock,(SOCKADDR*)&sin,sizeof(sin))==0)

{

send(sock, "HELO smtp\r\n", 11, 0);

send(sock, "MAIL From: <dede@yahoo.fr>\r\n", 28, 0);

send(sock, "RCPT To: <logik_suisse@hotmail.com>\r\n", 36, 0);

send(sock, "DATA\r\n", 8, 0);

send(sock, "Subject: Test !!!\r\n\r\n Test\r\n.\r\n", 56, 0);

send(sock, "QUIT\r\n", 6, 0);

}





closesocket(sock);

WSACleanup();

return 0;

}



Merci d'avance
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
14 févr. 2005 à 16:57
Salut,
C'est pas aussi simple que ca, gethostbyname retourne un pointeur sur une structure hostent, et cette structure contient l'ip du site. Si tu ne remplis pas le champ sin_addr de la structure sockaddr_in forcement ca ne marchera pas.
Tu peux aller voir msdn pour savoir comment utiliser gethostbyname, et pour avoir le format de la structure hostent. Et sur ce site, tu trouvera pas mal d'exemples de progs qui utilisent cette fonction.
0
Rejoignez-nous