victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 2023
-
10 août 2004 à 12:23
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 2023
-
12 août 2004 à 11:06
Voilà j'ai trouvé dans une source le code que j'ai un peu modifié pour dev-c++ et je voudrais savoir ce qu'il faut rajoutter pour une pièce jointe.
#include
#include <string.h>
using namespace std;
SOCKET to_server_socket = 0;
char server_name[100];
int port = 25;
char destinataire[120] = "RCPT To: <";
char sender[120] = "MAIL From: <";
char expe[100];char 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 );
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 );
}
int main( int argc, char *argv[] )
{
int note = 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>>expe;
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,expe);
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 ) )
{
MessageBox(NULL,"Vous devez être connecté en même temps à Internet !!\r\nSi vous l'êtes déjà regardez avec votre pare-feu","Erreur !!!",MB_OK|MB_ICONERROR);
exit(0);
}
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 )
{
MessageBox(NULL,"Erreur 1","Erreur !!!",MB_OK|MB_ICONERROR);
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)
{
MessageBox(NULL,"Erreur 2","Erreur !!!",MB_OK|MB_ICONERROR);
exit(0);
}
setsockopt(to_server_socket, SOL_SOCKET, SO_DONTLINGER, (char *) ¬e, sizeof(note));
// requete de connexion
if( connect( to_server_socket, ( struct sockaddr * ) &serverSockAddr,
sizeof( serverSockAddr ) ) < 0 )
{
MessageBox(NULL,"Erreur 3","Erreur !!!",MB_OK|MB_ICONERROR);
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 );
Process( "EHLO Toto\r\n" );
Process( sender ); // mail de l'expeediteur
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 ) );
}
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 10 août 2004 à 20:44
Salut,
tel qu'il est ecrit, ce code ne peut envoyer que des emails simple (que du texte).
Pour envoyer des pieces jointes, il faut utiliser le protocole MIME qui permet a ton mail d'avoir plusieurs parties ("multipart mail"). Avec ca tu peux envoyer un mail en version texte, en version html, avec un ou plusieur fichier joints, etc.
Je n'ai jamais envoyé de mail avec MIME, mais il me semble que c'est assez compliqué.
Sur le net tu trouvera la RFC consacrée au protocole MIME.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 11 août 2004 à 16:35
Salut,
MIME c'est juste pour mettre en forme ton mail. Ce n'est pas un protocol d'envoi, il faudra toujours envoyer son mail avec smtp meme s'il est en mime.