si quelqu'un a, ou connait, des références de site ou encore un code pour envoyer des mails en c avec le protocole smtp.
merci
si quelqu'un a, ou connait, des références de site ou encore un code pour envoyer des mails en c avec le protocole smtp.
merci
Sur un site, je lis:
La trame TCP est géré par les sockets donc tu n'as rien à faire...Il s'agit d'un protocole fonctionnant en mode connecté, encapsulé dans une trame TCP/IP.
Donc il faut envoyer le message au serveur SMTP sur le port 25Le protocole SMTP fonctionne grâce à des commandes textuelles envoyées au serveur SMTP (par défaut sur le port 25).
Donc le contenu DATA de la trame TCP n'est rien d'autre que la chaîne ascii qui contiendra la commande voulue (EHLO, MAIL FROM...) et ensuite le client attend la réponse du serveur qui est généralement:Chacune des commandes envoyées par le client (validée par la chaîne de caractères ASCII CR/LF, équivalent à un appui sur la touche entrée) est suivi d'une réponse du serveur SMTP composée d'un numéro et d'un message descriptif.
Un exemple de fonctionnement:250 OK
Jc
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 #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <stdio.h> #include<stdlib.h> #include<string.h> int main(void) { char buf[256]; /* Creation de la socket */ int sock; struct sockaddr_in sin; char ip[16] = "127.0.0.1"; int res; sock = socket(AF_INET, SOCK_STREAM, 0); /* Définition des paramétres de la socket */ sin.sin_addr.s_addr = inet_addr(ip); sin.sin_family = AF_INET; sin.sin_port = htons(25); //C'est du SMTP /* Ouverture de la connexion */ if(connect(sock, (struct sockaddr *)&sin, sizeof(sin))!=-1) { printf("Connexion au serveur SMTP\n"); /*Attente réponse de presentation du serveur*/ if((res=recv(sock,buf,sizeof buf,0))==-1) { printf("Reception du message echoue\n"); return EXIT_FAILURE; } /*On met le caractère NULL*/ buf[res] = '\0'; /*Affichage*/ printf("Message reçu: %s\n",buf); /*On envoie EHLO, en SMTP, il faut que la commande termine avec un '\n'*/ strcpy(buf,"EHLO\n"); if(send(sock,buf,strlen(buf),0)==-1) { perror("Send EHLO echoue\n"); return EXIT_FAILURE; } /*Attente réponse du serveur*/ if((res=recv(sock,buf,sizeof buf,0))==-1) { printf("Reception du message echoue\n"); return EXIT_FAILURE; } /*On met le caractère NULL*/ buf[res] = '\0'; /*Affichage*/ printf("Message reçu: %s\n",buf); /*Envoi de quit*/ strcpy(buf,"QUIT\n"); if(send(sock,buf,strlen(buf),0)==-1) { perror("Send QUIT echoue\n"); return EXIT_FAILURE; } } else { printf("Connexion échouée\n"); } return EXIT_SUCCESS; }
merci pour le code.
en fait je me demandai s'il était possible d'exécuter une commande "system" pour un envoi de mails.
Pas portable à mon avis. Je sais que si tu as linux, tu peux tenter:en fait je me demandai s'il était possible d'exécuter une commande "system" pour un envoi de mails.
Avec le mail que tu veux envoyer dans le fichier. Par contre, je ne sais plus s'il est possible ou non de spécifier un sujet par exemple...
Code : Sélectionner tout - Visualiser dans une fenêtre à part mail whoever@whatever.com < mail.txt
Mais pas sous windows du moins je ne pense pas...
D'où le "pas portable à mon avis",
Jc
ok merci; effectivement je suis sous linux
pour ceux que ca interesse on peut spécifier le sujet avec le "-s".
une fois que vous avez cliquer sur "entré" vous rentrez le corps du mail, à notez que vous pouvez passer à la ligne en appuyant sur sur "entré".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2mail -s "premier mail" machin@truc.fr
Pour valider vous appuyer sur la touche "controle" (ctrl) et sur "d".
La on vous demande si vous voulez faire un copie, vous rentrez une adresse et (ou) vous appuyez sur "entré".
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager