begin process at 2010 09 06 11:37:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > ENVOYER UN MAIL SIMPLE (STMP) EN VC++

ENVOYER UN MAIL SIMPLE (STMP) EN VC++


 Information sur la source

Note :
5,5 / 10 - par 4 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Niveau :Initié Date de création :21/06/2002 Date de mise à jour :25/06/2002 14:58:57 Vu :12 851

Auteur : SidSilver

Ecrire un message privé
Site perso
Commentaire sur cette source (36)
Ajouter un commentaire et/ou une note

 Description

Envoi un mail via le server stmp définit par l'utilisateur.
Le mail ne peux etre que du texte simple
Ne prend pas en charge les pieces jointes    

Source

  • #include <winsock.h>
  • #include <iostream.h>
  • #include <string.h>
  • SOCKET to_server_socket = 0;
  • char server_name[100];
  • int port = 25;
  • char destinataire[120] = "RCPT To: <";
  • char sender[120] = "MAIL From: <";
  • char exp[100], dest[100];
  • char sujet[50];
  • char message[1000];
  • char body[1100] = "Subject: ";
  • void bcopy( void * source, void * destination, int size )
  • {
  • char * src = ( char * ) source;
  • char * dst = ( char * ) destination;
  • for( int i=0; i<size; i++ )
  • dst[i] = src[i];
  • }
  • void bzero( void * destination, int size )
  • {
  • char * dst = ( char * ) destination;
  • for( int i=0; i<size; i++ )
  • dst[i] = 0x00;
  • }
  • void Process( char * buffer )
  • {
  • Sleep( 1000 );
  • cerr << "Envoye < " << buffer << endl;
  • int size = strlen( buffer );
  • int retVal = send( to_server_socket, buffer, size, 0 );
  • char buf[ 1024 ];
  • buf[0] = 0x00;
  • while( !buf[0] )
  • int yeah = recv( to_server_socket, buf, 1024, 0 );
  • cerr << "Recu > " << buf << endl << endl;
  • }
  • int main( int argc, char *argv[] )
  • {
  • int not = 0;
  • unsigned long ioctl_blocking = 1;
  • cout<<"Entrez le nom du serveur smtp ou son ip\n";
  • cin>>server_name;
  • cout<<"Entrez l'adresse email de l'expediteur\n";
  • cin>>exp;
  • cout<<"\nEntrez l'adresse email du destinataire\n";
  • cin>>dest;
  • cout<<"\nEntrez le sujet du mail\n";
  • cin>>sujet;
  • cout<<"\nEntrez votre message\n";
  • cin>>message;
  • strcat(sender,exp);
  • strcat(sender,">\r\n");
  • strcat(destinataire,dest);
  • strcat(destinataire,">\r\n");
  • strcat(body,sujet);
  • strcat(body," \r\n\r\n ");
  • strcat(body,message);
  • strcat(body," \r\n.\r\n");
  • WSADATA wsaData;
  • if( int err = WSAStartup( 0x0101, &wsaData ) )
  • {
  • cerr << "WSAStartup failed... Error: " << err << endl;
  • exit( -1 );
  • }
  • struct sockaddr_in serverSockAddr; // addresse de la socket
  • struct hostent * serverHostEnt; // description du host serveur
  • long hostAddr; // addr du serveur
  • bzero( &serverSockAddr, sizeof( serverSockAddr ) ); // initialise a zero 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 )
  • {
  • cerr << "echec gethost" << endl;
  • exit( 0 );
  • }
  • bcopy( serverHostEnt->h_addr, &serverSockAddr.sin_addr, serverHostEnt->h_length );
  • }
  • serverSockAddr.sin_port = htons( port ); // host to network port
  • serverSockAddr.sin_family = AF_INET; // AF_*** : INET=internet
  • // creation de la socket
  • to_server_socket = socket( AF_INET, SOCK_STREAM, 0 );
  • if ( to_server_socket < 0)
  • {
  • cerr << "echec creation socket client" << endl;
  • exit( 0 );
  • }
  • setsockopt(to_server_socket, SOL_SOCKET, SO_DONTLINGER, (char *) &not, sizeof(not));
  • // requete de connexion
  • if( connect( to_server_socket, ( struct sockaddr * ) &serverSockAddr,
  • sizeof( serverSockAddr ) ) < 0 )
  • {
  • cerr << "echec demande de connection" << endl;
  • exit( 0 );
  • }
  • ioctlsocket ( to_server_socket, FIONBIO, &ioctl_blocking );
  • char buf[ 1024 ];
  • buf[0] = 0x00;
  • while( !buf[0] )
  • int yeah = recv( to_server_socket, buf, 1024, 0 );
  • cerr << "Receive > " << buf << endl << endl;
  • Process( "EHLO Toto\r\n" );
  • Process( sender ); // mail de l'expediteur
  • Process( destinataire ); // mail du destinataire
  • Process( "DATA\r\n" );
  • Process( body );
  • Process( "QUIT\r\n" );
  • /* fermeture de la connection */
  • shutdown( to_server_socket, 2 );
  • return( closesocket( to_server_socket ) );
  • }
#include <winsock.h>
#include <iostream.h>
#include <string.h>

SOCKET to_server_socket = 0;
char   server_name[100];
int    port             = 25;

char destinataire[120] = "RCPT To: <";
char sender[120] = "MAIL From: <";
char exp[100], dest[100];
char sujet[50];
char message[1000];
char body[1100] = "Subject: ";

void bcopy( void * source, void * destination, int size )
{
   char * src = ( char * ) source;
   char * dst = ( char * ) destination;

   for( int i=0; i<size; i++ )
      dst[i] = src[i];
}

void bzero( void * destination, int size )
{
   char * dst = ( char * ) destination;

   for( int i=0; i<size; i++ )
      dst[i] = 0x00;
}

void Process( char * buffer )
{
   Sleep( 1000 );
   cerr << "Envoye   < " << buffer << endl;
   int    size   = strlen( buffer );
   int    retVal = send( to_server_socket, buffer, size, 0 );

   char buf[ 1024 ];
   buf[0] = 0x00;
   while( !buf[0] )
      int yeah = recv( to_server_socket, buf, 1024, 0 );
   cerr << "Recu     > " << buf << endl << endl;
}

int main( int argc, char *argv[] )
{
   int           not            = 0;
   unsigned long ioctl_blocking = 1;

   cout<<"Entrez le nom du serveur smtp ou son ip\n";
   cin>>server_name;
   cout<<"Entrez l'adresse email de l'expediteur\n";
   cin>>exp;
   cout<<"\nEntrez l'adresse email du destinataire\n";
   cin>>dest;
   cout<<"\nEntrez le sujet du mail\n";
   cin>>sujet;
   cout<<"\nEntrez votre message\n";
   cin>>message;

   strcat(sender,exp);
   strcat(sender,">\r\n");
   strcat(destinataire,dest);
   strcat(destinataire,">\r\n");
   strcat(body,sujet);
   strcat(body," \r\n\r\n ");
   strcat(body,message);
   strcat(body," \r\n.\r\n");

   WSADATA wsaData;
   if( int err = WSAStartup( 0x0101, &wsaData ) )
   {
      cerr << "WSAStartup failed... Error: " << err << endl;
      exit( -1 );
   }


   struct sockaddr_in   serverSockAddr;    // addresse de la socket
   struct hostent     * serverHostEnt;     // description du host serveur
   long                 hostAddr;          // addr du serveur

   bzero( &serverSockAddr, sizeof( serverSockAddr ) );     // initialise a zero 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 )
      {
         cerr << "echec gethost" << endl;
         exit( 0 );
      }
      bcopy( serverHostEnt->h_addr, &serverSockAddr.sin_addr, serverHostEnt->h_length );
   }

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

   to_server_socket = socket( AF_INET, SOCK_STREAM, 0 );
   if ( to_server_socket < 0)
   {
      cerr << "echec creation socket client" << endl;
      exit( 0 );
   }

   setsockopt(to_server_socket, SOL_SOCKET, SO_DONTLINGER, (char *) &not, sizeof(not));


   // requete de connexion
   if( connect( to_server_socket, ( struct sockaddr * ) &serverSockAddr, 
                                      sizeof( serverSockAddr ) ) < 0 )
   {
      cerr << "echec demande de connection" << endl;
      exit( 0 );
   }

   ioctlsocket ( to_server_socket, FIONBIO, &ioctl_blocking );

   char buf[ 1024 ];
   buf[0] = 0x00;
   while( !buf[0] )
      int yeah = recv( to_server_socket, buf, 1024, 0 );
   cerr << "Receive > " << buf << endl << endl;

   Process( "EHLO Toto\r\n" );
   Process( sender );   // mail de l'expediteur
   Process( destinataire );   // mail du destinataire
   Process( "DATA\r\n" );
   Process( body );
   Process( "QUIT\r\n" );

   /* fermeture de la connection */
   shutdown( to_server_socket, 2 );
   
   return( closesocket( to_server_socket ) );
}     

 Conclusion

ATTENTION dans settings du projet / link     ajouter : ws2_32.lib  sinon ca marche pas

Je l'ai testé et ça marche nikel !
Pas besoin de modifier la source, juste la copier et la compiler et ça marche.    


 Sources du même auteur

ZIPPER UN OU PLUSIEURS FICHIERS D'UN RÉPERTOIRE (VC++)
ZIPPER UN FICHIER AVEC WINZIP32 (VC++ 6.0)
ENVOYER UN MAIL AVEC PIECE JOINTE (UTILISE MAPI) EN VC++

 Sources de la même categorie

Source avec Zip [C++][W IN]LIBRAIRIE HTTP par nipepsinicolas
Source avec Zip ASPIRATEUR RÉCURSIF MACOS par tontonCD
Source avec Zip INTÉGRATION SIMPLE D'UN CLIENT IRC À UNE APPLICATION par PJulot
LIBRAIRIE POUR SOCKETS C++ par genetApt151
Source avec Zip COVERT ART IMAGE par nanonavich

Commentaires et avis

Commentaire de ADPro22 le 21/06/2002 19:42:36

Salut SidSilver !

Juste quelques petites remarques:
Au lieu d'utiliser tes fonctions bcopy et bzero, tu peux utiliser memcpy et memset :
void *memcpy( void *dest, const void *src, int count );
void *memset( void *dest, int val, int count );

D'autre part, si tu veux pouvoir saisir le corps du message avec plusieurs lignes, je te conseille d'utiliser cin.getline à la place de cin sous la forme :
cin.getline(message, 1000, '$');
Le délimiteur est alors le caractère $ et non plus


(le premier Process, c'est HELO BobSender...)

Sinon, c'est un super prog.



Commentaire de Kirua le 22/06/2002 02:47:50

Est-ce qu'un cin ne limite pas très fort le nombre de caractères? Combien au maximum?

Commentaire de ADPro22 le 22/06/2002 10:16:16

Non, cin ne limite pas le nombre de caractères : il renvoie une référence à la chaine e fait. La limitation est donc imposée par la déclaration de la chaine.
Au delà, c'est tronqué.

Commentaire de omnikod le 17/10/2002 12:55:54

pour moi ça ne marche pas !!!


Compiling...
smtp.cpp
Linking...
smtp.obj : error LNK2001: unresolved external symbol __imp__recv@16
smtp.obj : error LNK2001: unresolved external symbol __imp__send@16
smtp.obj : error LNK2001: unresolved external symbol __imp__closesocket@4
smtp.obj : error LNK2001: unresolved external symbol __imp__shutdown@8
smtp.obj : error LNK2001: unresolved external symbol __imp__ioctlsocket@12
smtp.obj : error LNK2001: unresolved external symbol __imp__connect@12
smtp.obj : error LNK2001: unresolved external symbol __imp__setsockopt@20
smtp.obj : error LNK2001: unresolved external symbol __imp__socket@12
smtp.obj : error LNK2001: unresolved external symbol __imp__htons@4
smtp.obj : error LNK2001: unresolved external symbol __imp__gethostbyname@4
smtp.obj : error LNK2001: unresolved external symbol __imp__inet_addr@4
smtp.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8

Commentaire de laglisse le 18/10/2002 16:14:23

omnikod&gt; Le code marche tres bien !!!
t'a pas du lire la petite ligne en bas (moi o6 je me suis fé avoir) :
ATTENTION dans settings du projet / link ajouter : ws2_32.lib sinon ca marche pas

Je l'ai testé et ça marche nikel !
Pas besoin de modifier la source, juste la copier et la compiler et ça marche

Commentaire de laigle76 le 14/11/2002 13:05:52

slt
je rencontre un petit probleme avec ce code....
Si je met un sujet de plus d'1 mot je ne peut pas mettre de message
Si je ne met qu'un mot au sujet je peut mettre le message mais je ne recois que le premier mot du message....

Par exemple si mon message est :
"rendez vous cette aprem au ciné"

je ne recois que "rendez"....

D'ou viens le pb ???

Merci d'avance

Commentaire de Achoum le 21/11/2002 15:39:52

Bonjour, j'ai un petit pb.
Mon compilateur VC++ 6 ne renonnai pas
ioctlsocket ( to_server_socket, FIONBIO, &ioctl_blocking );
Pourriez vous vous me donner la bone librairie, ou m'expliquer
comment remplacer cette instruction.
Merci d'avance .

Commentaire de nycos1981 le 26/01/2003 19:10:24

Bon déjà merci sid .
ce prog fonctionne bien cepandant celui ou celle qui reçoit le mail vois ni le destinataire ni l'expediteur (les champs reste vide) ...
En envoyant un mail en se connectant en telnet sur un serveur smtp j'ai remmarqué que là non plus les expediteur et destinataire ne sont pas transmis bien que le mail lui le soit correctement.
Alors si quelqu'un a une idéé (ou si lui ça marche) qu'il me le dise
Merci .

Commentaire de capoueidiablo le 30/05/2003 17:01:45

salut je vien d'utilisé ton prog et j'ai uhn p'tit probleme, disons que je me connect au smtp de club-internet mais j'arrive pas a envoyer je pence que c du au login et mot de pass qu'il demande donc si vous avez un serveur smtp a me filer ce serai cool ;-) je vous aimes

Commentaire de D1m3x le 28/07/2003 17:28:03

mail.hotmail.com je crois ;)

Commentaire de ptiscripter le 08/11/2003 15:46:41

salut all! euh moua sa marche pas jutilise dev C++ et je c pas ou fo mettre ws2_32.lib !!!
pliz aidez moi

THx davance

Commentaire de D1m3x le 08/11/2003 16:48:27

tu met ws2_32.lib dans le dossier: Dev-Cpp/lib/ . Ensuite tu dois soit inclure ws2_32.lib dans ton projet (Ajouter un fichier au projet...) ou bien tu écris ça tout au début du code source:

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

tu n'aura normalement plus de problème avec ce code ;)

Bonne prog!
ciao

Commentaire de ptiscripter le 08/11/2003 16:50:08

ok thx

Commentaire de killdemon le 15/11/2003 16:25:13

ca marche pa moi non plu.g pourtant mis la ligne a debut

Commentaire de D1m3x le 15/11/2003 17:01:26

killdemon, c'est quoi le problème? L'envoi ne se fait pas ou bien impossible de compiler? si c'est impossible de compiler, donne un peu plus d'informations ;) come ça on pourra peut être t'aider.

Ciao ;)

[DmX]

Commentaire de killdemon le 16/11/2003 13:39:04

impossible de compiler il met des links mais pourtant j'ai mi la ligne au debut.je sai pk il veu pas compiler

Commentaire de capoueidiablo le 12/12/2003 11:57:49

Voili Voilou c remoi bon je croi que j'ai trouvé why ca marche pas :-p bon je sais que ca date que j'ai pas poster sur ce post mais bon ....
alors voila c tout simple l'admin a bloqué le port du smtp
bon ba c'etait tout a non sur la source qui y'a au dessus, j'ai un pbm si j'ecris plus d'un mot dans objet le premier mot sera l'objet et le reste sera le message et donc je peux rien ecrire dans message :-/ si quelqu'un c ce qu'il faut faire ...

Commentaire de lescroel le 14/01/2004 17:27:45

Comment encoder le message en MIME ?
Comment mettre plusieurs destinataires et plusieurs CC ?
Comment joindre plusieurs pièces jointes ?

Commentaire de js le 20/02/2004 11:57:24

Avec Borland Compiler (5.0), j'obtiens le résultat suivant :

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
vcc.cpp:
Error E2356 vcc.cpp 11: Type mismatch in redeclaration of 'exp(double)'
Error E2449 vcc.cpp 11: Size of 'exp(double)' is unknown or zero
Warning W8004 vcc.cpp 43: 'yeah' is assigned a value that is never used in function Process(char *)
Warning W8004 vcc.cpp 45: 'retVal' is assigned a value that is never used in function Process(char *)
Error E2335 vcc.cpp 55: Overloaded 'exp' ambiguous in this context in function main(int,char * *)
Error E2285 vcc.cpp 63: Could not find a match for 'strcat(char *,double (*)(double))' in function main(int,char * *)
Warning W8008 vcc.cpp 106: Condition is always false in function main(int,char * *)
Warning W8008 vcc.cpp 106: Condition is always false in function main(int,char * *)
Warning W8066 vcc.cpp 108: Unreachable code in function main(int,char * *)
Warning W8004 vcc.cpp 128: 'yeah' is assigned a value that is never used in function main(int,char * *)
Warning W8057 vcc.cpp 142: Parameter 'argc' is never used in function main(int,char * *)
Warning W8057 vcc.cpp 142: Parameter 'argv' is never used in function main(int,char * *)
*** 4 errors in Compile ***

En gros, ça ne marche pas du tout. Y-a-t-il un fichier à inclure en plus? (comme pour Dev-Cpp). Si oui, comment? Ou puis-je trouver ce fichier?

Commentaire de hetler le 13/03/2004 18:18:40

salut tous le monde

j'ai compiler ce programmes mais ça se bloque a la fin ,voici ce que je saisie :
- mail.yahoo.fr
- mon adress
- adress destinataire
- test
- test

mais reste en attente sans rien faire ,je vérifie ma boite et ça n'arrive pas

Commentaire de minny91 le 01/04/2004 12:01:22

slt tout le monde
deja merci pour toute ces info

j'ai un probleme un peu plus bete j'ai rajouter la librairie pas de souci la dessus
j'utilise VC++ 2003
il n'arrive pas a ouvrir iostream.h
j'ai essayer de le mettre direct dans mon repertoire mais a chaque fois c'est un autre fichier qui manque
si quelqu'un peut m'aider ca serait chouette

Commentaire de victorcoasne le 10/08/2004 11:55:34

marche nickel sous dev avec : -lwsock32

Est-ce que quelqu'un pourrait me donner le bout de code pour une pièce jointe ?

Commentaire de anthonycosson le 03/06/2005 10:39:57

slt a tous g un ptit prob kan je compile il ne trouve pa la lib iostream.h ou est le prob ? THx davance

Commentaire de chuckboy le 29/09/2005 22:40:28

Comment faire pour envoyer du texte en gras ou encore en souligner ? J'ai essayer pas mal de truc et je n'y arrive pas !

Faudrait que le e-mail soit de type html ? COmment je fais ca ?

Commentaire de KissyFroth le 17/10/2005 21:58:44

Pour l'instant je connai les memes problemes que Chuckboy : impossible de souligner mettre en gras ...etc.
Un autre probleme tres important est la mention "Destinataire Caché" qui discrédite le message (la plupart du temps automatiquement). Y a-t-il un moyen d'empecher ca ?

Pour info pour ceux qui demandent voici une petite liste de serveurs smtp :

//        smtp.laposte.net              
//        smtp.ifrance.com               //
//        smtp.mail.yahoo.frt            //
//        smtp.freesurf.fr               //
//        smtp.neuf.fr                   //
//        smtp.fr.aol.com                //
//      * smtp.cegetel.net               //
//        mail.club-internet.fr          //
//        smtp.wanadoo.fr  

Personnellement, j'utilise souvent smtp.cegetel.net (ca marche bien)



Commentaire de delfare le 03/11/2005 18:00:33

moi, ca ne marche absolument pas, je remplis correctement tout et puis, j'attend sans qu'il se passe rien, je ne recoit aucunes reponses du serveur, il reste bloque à while( !buf[0] ) et si je supprime celui ci, il reste bloqué également aux autres(dans process), j'ai essayé différents adresses mais aucunes ne marche, il reste toujours bloqué et ne recoit aucunes infos.
quelqu'un aurait-il une idée sur la raison?
j'utilise dev-cpp

Commentaire de chuckboy le 03/11/2005 18:09:46

As tu une communication avec le serveur , essait de faire un ping !

Commentaire de delfare le 03/11/2005 20:48:29

oui : ping smtp.mail.yahoo.fr
"envoit d'une requete 'ping' sur smtp1.mail.vip.ulk.yahoo.com [217.12.11.66] avec 32 octets de données :
reponse de 217.12.11.66 : octets=32 temps=34 ms TTL=248
reponse de 217.12.11.66 : octets=32 temps=26 ms TTL=248
reponse de 217.12.11.66 : octets=32 temps=29 ms TTL=248
reponse de 217.12.11.66 : octets=32 temps=26 ms TTL=248

Statistiques Ping pour 217.12.11.66 :
    Paquets : envoyés : 4, recus : 4, perdu : 0(perte(0%),
Durée approximative des boucles en millisecondes :
    minimum = 26 ms, maximum = 34 ms, moyenne = 28 ms"

Commentaire de delfare le 04/11/2005 12:12:19

je me demande si c'est pas mon antivirus qui me blocke ca(meme si je lui dit d'accepter quand je me connecte), quelqu'un pourrais me passer un .exe(pour verifier que c'est pas mon compilateur) et des donnees testees (serveur smtp, ...)

Commentaire de chuckboy le 04/11/2005 14:40:33

Post ton code ca devrais pas etre trop complexe de trouver c koi !

Commentaire de delfare le 04/11/2005 15:20:14

ben, j'utilise tel-quel ce code ci mais j'aimerais avoir un .exe de ce code pour verifier que c'est pas un probleme de compilation

Commentaire de lol55 le 28/08/2006 17:00:54

75 erreurs sous Visual C++
et 4 sous Dev-C++ !!!

J'y comprends plus rien là!...

PS:Je note pas.

Commentaire de souf_ le 11/10/2006 20:03:57

salut
j'ai vu ton code c'est bien,je l'ai executer.
normalement j'ai écrit
pop.mail.yahoo.com

xxx@yahoo.fr

ddd@hotmail.com


et j'ai reçu aucun message dans la boite

merci por tout

Commentaire de bigloo le 24/09/2007 00:15:29

J'ai eu quelque problème pour le faire fonctionner en modifiant le code. Mais je suis arrivé, comme j'utilise Dev-C++. Pour ceux qui on des problèmes de compilation voici la solution sur les problèmes de liaison: il suffit d'indiquer la librairie de liaison "winsock" pas par la commande pragma (que l'on peut remplacer par celle de "winsock2", ce que j'ai fait) pour cela:

    Projet -> Options Projet -> Onglet Paramétre
    Dans la liste "Editeur de lien", y ajouter "-lws2_32"
    Puis bouton "OK"

A partir de là, tous les messages de lien introuvable devraient disparaître.

Un autre point important qui ne met pas apparu de suite car on n'y pense plus. La plupart des serveurs de messagerie des FAI sont bloqués sur les clients de la FAI (Fournisseur d'Accès à Internet).

Par ex:
Si on a un compte mail sur freesurf et que notre FAI est cegetel alors le mail devra être adresser smtp.cegetel.net et non à smtp.freesurf.fr comme on pourrait le croire.

Pour l'instant, j'arrive à ouvrir la connexion avec le serveur de messagerie distant. Par contre, les commandes de construction du message ne sont pas comprises (donc pas d'envoie mais cela n'est pas très grave, je chercherais la suite demain).



Commentaire de bigloo le 24/09/2007 12:31:50

J'ai trouvé sur le web l'article RFC 821 traduit du protocole SMTP à l'adresse suivante:

http://abcdrfc.free.fr/rfc-vf/rfc821.html

Vous trouverez aussi dans Code Source celle-ci avec d'autre à l'adresse ci-dessous

http://www.ircfr.com/codes/RFC-821-SMTP-1459-IRC-1939-POP3_21210.aspx

Il donne les clauses de transmission des MAIL. En autre, des questions ont été posé sur le problème que le nom de la personne rédactrice ou réceptrice n'apparaîssent pas pour cela, il faut ajouter après la clause DATA une entête au message comme suit:

[From|To|Cc|Bcc]: <login@domain> (; <login@domain>)*

From ::= Expéditeur
To ::= Destinataire
Cc ::= Destinataire en copie
Bcc ::= Copie cachée

Si une adresse spécifiée par une clause RCPT TO n'est pas présente, alors il s'agit d'un destinataire en copie masqué. Cependant, il est trés sommaire sur les directives que l'on peut écrire dans la clause DATA. A première vue cela dépend du serveur MAIL distant car la spécification grammaticale et lexicale ne précise pas de mots spécifique.

Dans mes recherches, il faut consulter la RFC 822 qui donne le détail des balises de la clause DATA. L'adresse ci-dessous permet d'avoir quelques réponses:

http://jlr31130.free.fr/rfc822-index.html

Mais rien sur l'envoie avec des pièces jointes. J'ai, donc, regarder la source d'un message avec une pièce jointe. Dans la clause DATA, la construction semble complexe, on ajoute quelque chose comme ça:

Content-type: multipart/mixed; boundary="Boundary_(ID_Py1zk4uvrMPiov7B0rLf+Q)"
Thread-index: AcepUI3uwpvjmH8rT+mUvK8SOe4DDw==
....
Quelque chose pour faire apparaître le lien
....
--Boundary_(ID_Py1zk4uvrMPiov7B0rLf+Q)
Content-type: application/msword; name="Rapprochement OGI HORUS-DIALVEIL.doc"
Content-transfer-encoding: base64
Content-disposition: attachment; filename="Rapprochement OGI HORUS-DIALVEIL.doc"
....
Format b64 du fichier
....
--Boundary_(ID_Py1zk4uvrMPiov7B0rLf+Q)--

Pour l'instant, je n'ai fait que des test en connexion TELNET. Mais pour l'attachement d'un fichier, il suffit de déclarer qu'il s'agit d'un mail avec multi documents, d'ajouter des liens sur des balises et des balises encadrant le fichier transmis encodé en base 64.

Commentaire de julien51300 le 05/04/2008 20:30:06

la librairie iostream.h est en option ?????

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
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,515 sec (3)

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