I) Information

Ce code est un mini client de messagerie.

Il sait lire les messages sur des serveurs POP3 (classe CPOP3) et envoyer des messages sur des serveurs SMTP (classe CSMTP). Il laisse les messages sur le serveur pour ne pas interférer avec votre client de messagerie.

Il permet aussi de gérer POP3S et SMTPS (STARTTLS) en utilisant OpenSSL. Il permet aussi de faire l'authentification SMTP (LOGIN/PLAIN/DIGEST-MD5/CRAM-MD5)...

La classe CMail gère une partie de la spécification MIME (création et lecture) :
-> multipart
-> pièces jointes multiples
-> message HTML/Plain text alternatif
-> images incluses (en pièces jointes) dans le code HTML
-> charset non us-ascii (principalement iso-8859-1 : caractères accentués)
-> Base64 pour les fichiers binaires et Quoted-Printable pour les textes
et From, To, Cc, Bcc multiples

L'interface n'est pas très développée. Elle gére des comptes de messagerie autonome. Elle permet de composer des mails multipart et de les lire (pièces jointes comprises). Il n'y a pas d'éditeur HTML WYSIWYG masi un panel d'édition MANUEL d'HTML et un preview avec le WebBrowser de IE.

Toutes les classes sont liées. Un mini fichier d'aide est inclu pour les méthodes dont le nom ne donne pas d'explication.

L'implémentation des méthodes Base64 (dont le code n'est pas entièrement de moi) et QP se trouve dans une dll C pour optimiser la vitesse d'exécution.

Le code de la gestion de l'authentification et de TLS est dans une autre DLL parce que les codes des fonctions de hachages sont disponibles principalement en C.

II) Installation

http://gnuwin32.sourceforge.net/packages/openssl.htm

Décompresser le fichier openssl-bin (binaries) et extraire libeay32.dll et libssl32.dll dans le dossier du projet VB

III) Le code des dlls

Le code de base64 de MIMECode.dll provient de http://www.daylight.com/daycontrib/libdu/http/du_http_base64.c que j'ai "dllizé"...

Le code de Auth.dll :
-> SSL/TLS : simple wrapper (ou presque) de l'API de OpenSSL inspirée de http://www.rtfm.com/openssl-examples/
-> DIGEST-MD5 : l'algo vient d'un script perl
-> LOGIN/PLAIN : par moi...pas trop compliqué
-> CRAM-MD5 : http://www.net-track.ch/opensource/cmd5/ "dllizé"
md5c.c is Copyright (C) 1991-1992 by RSA Data Security, Inc.
hmac_md5.c is taken from RFC2104.

IV) Compilation de Auth.dll

Pour pouvoir compiler Auth.Dll il vous faut VC++ 2005 et installer OpenSSL : http://gnuwin32.sourceforge.net/packages/openssl.htm
-> le contenu de lib du fichier openssl-lib (developer files) dans le répertoire VC\lib
-> le dossier openssl du fichier openss-src (sources) dans le répertoire VC\include
-> distribuer libeay32.dll et libssl32.dll avec Auth.dll
