[VC++] send mail ?

send mail ? [VC++] - C++ - Programmation

Marsh Posté le 25-09-2003 à 11:17:02    

salut!
 
est-il possible d'envoyer des mails avec VC++ ?!
 
j'ai vu qu'on pouvait en C# mais j'utilise VC++...?
 
quelqu'un voudrais m'offrir son aide :-p! ?
 
merci d'avance!


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 11:17:02   

Reply

Marsh Posté le 25-09-2003 à 11:45:31    

husiana a écrit :

salut!
 
est-il possible d'envoyer des mails avec VC++ ?!
 
j'ai vu qu'on pouvait en C# mais j'utilise VC++...?
 
quelqu'un voudrais m'offrir son aide :-p! ?
 
merci d'avance!


Il va te falloir une dll ou un activeX dédié pour faire ça...ca doit bien exister en gratuit![:skeye]

Reply

Marsh Posté le 25-09-2003 à 11:46:36    

erf, m'en doutais, gratuit gratuit....:-/


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 11:54:13    

husiana a écrit :

erf, m'en doutais, gratuit gratuit....:-/


http://www.google.com/search?q=fre [...] 8&oe=utf-8
Doit bien y avoir un truc qui va bien là-dedans!

Reply

Marsh Posté le 25-09-2003 à 12:04:08    

Chilkat smtpQ is a companion product that works with each of Chilkat's email components and runs as a Windows Service. Each of the Chilkat email components now has a method, SendQ, that dramatically increases sending performance by queuing emails directly to the smtpQ's queue directory for immediate delivery. Chilkat SMTPQ is sold bundled with Chilkat Mail / WebMail / Email.NET and Email VC++. The price for Chilkat SMTPQ is effectively $85 as part of the bundle.
 
 
erf, c'est ce qu'il me faut :-p!


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 12:22:04    

http://www.mail-bounce.com/
 
 
TROUUUUUUUVVVVVVéééééééééé
 
c trop fort :-)!
 
a dl d'urgence! lol


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 13:10:01    

husiana a écrit :

http://www.mail-bounce.com/
 
 
TROUUUUUUUVVVVVVéééééééééé
 
c trop fort :-)!
 
a dl d'urgence! lol


J'en profite pour le noter, ca pourrait me servir! :jap:
 
[edit]
C'est moi ou c'est payant? :heink:


Message édité par skeye le 25-09-2003 à 13:12:39
Reply

Marsh Posté le 25-09-2003 à 13:22:34    

non non c gratuit, http://www.zip-compression.com/ChilkatLib.zip
 
voila, dl ca :-p!
 
y'a mm un exemple de code qui fonctionne trop bien...
 
bonne journée!


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 13:22:53    

Effectivement ça semble playant...  :(  
 
Je pense que le plus simple sinon est d'utiliser MAPI. La seule contrainte est qu'il utilise le compte mail configuré sur la machine, mais cela marche pas trop mal (et je pense que c'est ce qui est utilisé dans C#, non ?).


---------------
each day I don't die is cheating
Reply

Marsh Posté le 25-09-2003 à 13:32:13    

// Unlock the library.  This call is only needed once at the beginning of
 // your program.  Replace the unlock code used in this example with a  
 // fresh 30-day code obtained from http://www.chilkatsoft.com/register30.asp
 
comment ils peuvent bloquer une librairie qui est utilisable?!


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 13:32:13   

Reply

Marsh Posté le 25-09-2003 à 14:24:12    

la lib est utilisable 30 jours, dc une fois compilés, les pg ne doivent fonctionner "a vie"...?


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 14:32:17    

husiana a écrit :

la lib est utilisable 30 jours, dc une fois compilés, les pg ne doivent fonctionner "a vie"...?
 


bah ils doivent fonctionner 30 jours quoi... [:skeye]
Ca suffit pour décider si oui ou non tu as envie d'acheter leur brol! :sarcastic:

Reply

Marsh Posté le 25-09-2003 à 14:38:34    

J'ai trouvé ça, je sais pas ce que ca vaut:
http://axsoft.hypermart.net/products.htm#SMTPSock

Reply

Marsh Posté le 25-09-2003 à 14:51:09    

c en VB, mon visual basic "segfault"...


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 14:51:31    

Reply

Marsh Posté le 25-09-2003 à 14:52:18    

husiana a écrit :

c en VB, mon visual basic "segfault"...


bah un activeX c'est un activeX hein...ps de raison que tu puisses pas t'en servir avec VC++! :??:

Reply

Marsh Posté le 25-09-2003 à 14:56:38    

j'ai pas cherché, ce sont des .vb ou ds le genre...


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 15:08:49    

Reply

Marsh Posté le 25-09-2003 à 15:16:37    

et voila ce que ca donne sous VC++....
 

Code :
  1. il faut changer 3 choses dans le programme: le nom du serveur SMTP, l'adresse mail de l'expediteur et celle du destinataire. Il faut aussi ajouter la librairie ws2_32.lib dans Project -> Settings -> Link -> Object/library modules pour une question de link a la compilation.
  2. #include <winsock.h>
  3. #include <ostream.h>
  4. SOCKET to_server_socket = 0;
  5. char   server_name[]    = "SERVEUR"; // Changer SERVEUR par le nom du serveur
  6. int    port             = 25;
  7. void bcopy( void * source, void * destination, int size )
  8. {
  9.    char * src = ( char * ) source;
  10.    char * dst = ( char * ) destination;
  11.    for( int i=0; i<size; i++ )
  12.       dst[i] = src[i];
  13. }
  14. void bzero( void * destination, int size )
  15. {
  16.    char * dst = ( char * ) destination;
  17.    for( int i=0; i<size; i++ )
  18.       dst[i] = 0x00;
  19. }
  20. void Process( char * buffer )
  21. {
  22.    Sleep( 1000 );
  23.    cerr << "Envoye   < " << buffer << endl;
  24.    int    size   = strlen( buffer );
  25.    int    retVal = send( to_server_socket, buffer, size, 0 );
  26.    char buf[ 1024 ];
  27.    buf[0] = 0x00;
  28.    while( !buf[0] )
  29.       int yeah = recv( to_server_socket, buf, 1024, 0 );
  30.    cerr << "Recu     > " << buf << endl << endl;
  31. }
  32. int main( int argc, char *argv[] )
  33. {
  34.    int           not            = 0;
  35.    unsigned long ioctl_blocking = 1;
  36.    WSADATA wsaData;
  37.    if( int err = WSAStartup( 0x0101, &wsaData ) )
  38.    {
  39.       cerr << "WSAStartup failed... Error: " << err << endl;
  40.       exit( -1 );
  41.    }
  42.    struct sockaddr_in   serverSockAddr;    // addresse de la socket
  43.    struct hostent     * serverHostEnt;     // description du host serveur
  44.    long                 hostAddr;          // addr du serveur
  45.    bzero( &serverSockAddr, sizeof( serverSockAddr ) );
  46.    // converti l'adresse ip 9.100.1.1 en entier long
  47.    hostAddr = inet_addr( server_name );
  48.    if( ( long ) hostAddr != ( long ) -1 )
  49.       bcopy( &hostAddr, &serverSockAddr.sin_addr, sizeof( hostAddr ) );
  50.    else               // si on a donne un nom
  51.    {
  52.       serverHostEnt = gethostbyname( server_name );
  53.       if ( serverHostEnt == NULL )
  54.       {
  55.          cerr << "ca chie gethost" << endl;
  56.          exit( 0 );
  57.       }
  58.       bcopy( serverHostEnt->h_addr, &serverSockAddr.sin_addr,
  59.              serverHostEnt->h_length );
  60.    }
  61.    serverSockAddr.sin_port = htons( port );         // host to network port
  62.    serverSockAddr.sin_family = AF_INET;             // AF_*** : INET=internet
  63.    // creation de la socket
  64.    to_server_socket = socket( AF_INET, SOCK_STREAM, 0 );
  65.    if ( to_server_socket < 0)
  66.    {
  67.       cerr << "ca chie creation socket client" << endl;
  68.       exit( 0 );
  69.    }
  70.    setsockopt(to_server_socket, SOL_SOCKET, SO_DONTLINGER, (char *) &not,
  71.               sizeof(not));
  72.    // requete de connexion
  73.    if( connect( to_server_socket, ( struct sockaddr * ) &serverSockAddr,
  74.                                       sizeof( serverSockAddr ) ) < 0 )
  75.    {
  76.       cerr << "ca chie demande de connection" << endl;
  77.       exit( 0 );
  78.    }
  79.    ioctlsocket ( to_server_socket, FIONBIO, &ioctl_blocking );
  80.    char buf[ 1024 ];
  81.    buf[0] = 0x00;
  82.    while( !buf[0] )
  83.       int yeah = recv( to_server_socket, buf, 1024, 0 );
  84.    cerr << "Receive > " << buf << endl << endl;
  85.    Process( "HELO helio_denis\r\n" );
  86.    Process( "MAIL From: <ENVOYEUR>\r\n" );
  87.    Process( "RCPT To: <DESTINATAIRE>\r\n" );
  88.    Process( "DATA\r\n" );
  89.    Process( "Subject: Yeah !!!\r\n\r\nEt voici un petit mail !\r\n.\r\n" );
  90.    Process( "QUIT\r\n" );
  91.    /* fermeture de la connection */
  92.    shutdown( to_server_socket, 2 );
  93.    return( closesocket( to_server_socket ) );
  94. }



---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 15:19:29    

Tu l'as testé?

Reply

Marsh Posté le 25-09-2003 à 15:22:26    

ca marche du tonner!
 
ca dechire sa maman! mm pas besoin de mettre login + pass du server mail...


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 15:25:51    

husiana a écrit :

ca marche du tonner!
 
ca dechire sa maman! mm pas besoin de mettre login + pass du server mail...


Noté!:jap:
Nettement plus pratique qu'un activeX!:D

Reply

Marsh Posté le 25-09-2003 à 15:36:01    

c clair!
 
une vieille page c++...


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 25-09-2003 à 15:36:12    

la gestion d'erreur me semble a revoir [:meganne]
 
 

Code :
  1. cerr << "ca chie demande de connection" << endl


 
Sans parler du professionalisme rencontré [:ddr555]


Message édité par chrisbk le 25-09-2003 à 15:36:51
Reply

Marsh Posté le 26-09-2003 à 08:13:14    

husiana a écrit :

ca marche du tonner!
ca dechire sa maman! mm pas besoin de mettre login + pass du server mail...


et la marmotte...
sur ton lan au boulot, ca va marcher. Par contre chez toi avec ton ISP, rêves pas trop. Si ton client mail te demande un LOGIN et PASS, c'est pas que pour faire pro...
Demandes toi seulement ce que ca va faire si tu as plusieurs utilisateurs. Tout le monde a la même identité? Faut pas trop rêver non plus. Et quand tu es connecté chez ton ISP et que toute ta petite famille a un mail différent (avec login+pass différents) sur le même compte, comment va être identifié l'emetteur?
 
Donc ca ne fonctionnera pas toujours. Ce code reflete le cas simple et idéal. Il a par contre l'énorme avantage de montrer le principe de fonctionnement et de montrer aussi que ce n'est pas hyper complex. Pas d'asn.1 ou autre bizzaretée ;-)

Reply

Marsh Posté le 26-09-2003 à 08:51:08    

pas tt a fais d'accord!
premierement parce que je l'ai testé sur pas mal de monde et ca fonctionne niquel, qu'il y est IP fixe ou non, firewall hardware ou non...
deuxiemement s'il y a plusieurs utilisateurs pas tt le monde a la mm identité, vu que...apparement t'as pas bien vu ce qu'il faisais ou ne l'as mm pas testé?...lui il s'en fou, c'est une machine ne l'oublions pas, il prends pour seule identité ton IP! il ne va pas contacter le serveur de l'expé pour voir si le mail d'expediteur bidon que tu as mis est correcte ou non.
Tu n'as pas besoin du mot de passe de couillon@wanadoo.fr pour lui envoyer un mail?! bon alors!


---------------
http://husiana.myftp.org/phpsysinfo
Reply

Marsh Posté le 26-09-2003 à 09:13:54    

sowhatin22 a écrit :


et la marmotte...
sur ton lan au boulot, ca va marcher. Par contre chez toi avec ton ISP, rêves pas trop. Si ton client mail te demande un LOGIN et PASS, c'est pas que pour faire pro...
Demandes toi seulement ce que ca va faire si tu as plusieurs utilisateurs. Tout le monde a la même identité? Faut pas trop rêver non plus. Et quand tu es connecté chez ton ISP et que toute ta petite famille a un mail différent (avec login+pass différents) sur le même compte, comment va être identifié l'emetteur?
 
Donc ca ne fonctionnera pas toujours. Ce code reflete le cas simple et idéal. Il a par contre l'énorme avantage de montrer le principe de fonctionnement et de montrer aussi que ce n'est pas hyper complex. Pas d'asn.1 ou autre bizzaretée ;-)


Il n'y a pas d'identification au niveau de l'envoi.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed