Mail avec pièce jointe

victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 10 août 2004 à 12:23
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 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 *) &note, 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 ) );
}


Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com

7 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
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.
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
11 août 2004 à 13:52
oui mais je ne veux passer que part un smtp et être compatible avec Dev-C++

Alors si quelqu'un peut maider qu'il le dise !!!

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
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.

Et bien sur que c'est compatible avec devc++
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
11 août 2004 à 20:09
alors est-ce que quelqu'un peut modifier code de façon MIME ?

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
0

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

Posez votre question
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
11 août 2004 à 20:24
Salut,
faut pas exagerer non plus, c'est toi qui programme ton appli, pas les autres...
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
12 août 2004 à 11:05
Ceci n'est qu'un bout de code pour moi.

Je veux un code qui réponds à mes exigences C tout.

En effet je programme mon apli mais celle là pour moi ne sera à titre d'exemple c'est à dire que je tranformerais main() en fonction.

PS : Si ça serait mon prog il serait écrit WinMain !!!

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
12 août 2004 à 11:06
Ceci n'est qu'un bout de code pour moi.

Je veux un code qui réponds à mes exigences C tout.

En effet je programme mon apli mais celle là pour moi ne sera à titre d'exemple c'est à dire que je tranformerais main() en fonction.

PS : Si ça serait mon prog il serait écrit WinMain !!!

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
0
Rejoignez-nous