Mis à jour le 18/12/2002
|
Droit de diffusion et
d'utilisation: Avant Propos : Vous vous êtes déjà sans doute posé la question de comment envoyer un e-mail ou bien en recevoir sans pour autant utiliser les contrôles d'Outlook. Et bien pour cela nous allons directement utilisé les sockets grâce aux composant Microsoft Winsock Control. Ce tutorial a pour but de comprendre comment
fonctionne le contrôle Winsock. J'ai fait le choix de vous présentez ce contrôle
via le développement d'une application permettant de lire et écrire des mails. Ce tutorial se divise en trois parties :
Partie I : Les contrôles nécessaires : Tout d'abord vous devez rajouter à votre projet le composant Microsoft Winsock Control. Pour cela vous allez dans le menu Projet puis Composants. La fenêtre suivante apparaîtra.
S'il n'apparaît pas dans la liste, essayer de récupérer le fichier MSWINSCK.OCX sur autre machine et faîtes "Parcourir..." afin de le sélectionner. Ensuite vous devez coller sur votre Form le contrôle lui même :
Cette form est composée de 5 champs de saisie et un d'affichage. Le premier nommé txtFrom permet de saisir l'expéditeur du mail. Le deuxième txtTo permet de saisir le récepteur du mail. Le troisième txtSubject permet de saisir le sujet du message. Le quatrième rtxtMail (de type RichTextBox) permet de saisir le contenu du mail. Le cinquième txtServer permet de saisir le serveur smtp à partir duquel vous souhaitez envoyer votre mail (généralement les erveurs smtp n'autorise que les machines appartenant au même réseau d'émettre des mails). Le sixième rtxtLog permet de voir ce que le serveur nous retourne comme information. Partie II - L'envoie d'un mail : La première chose à faire est de déclarer une variable permettant de capturer les évènements d'un contrôle Winsock.
Afin de capturer l'ensemble des évènements du contrôle Winsock que vous avez collé sur la Form, il faut que les deux variables pointent sur le même objet.
Voici le code complet de la Form :
Le code présent ci-dessus ne gère pas les erreurs. Comme vous pouvez le contaster, plusieurs évènements sont gérés dont la connexion, la déconnexion, la réception de messages et la réception d'erreurs. Pour chaque envoi, la variable nextFalse est positionnée à False car le programme doit attendre que le serveur est répondu avant de d'envoyer la suite. Vous pouvez rencontrer deux types d'erreurs : les erreurs liées à la connexion donc c'est l'évènement Error qui vous permettra de les gérer, ou bien les erreurs retournées par le serveur si vous avez envoyé une mauvaise commande. Dans ce dernier cas, c'est dans l'évènement DataArrival qu'il faudra regarder la chaîne retournée par le serveur pour savoir si tout c'est bien passé. Lorsque vous envoyez de grosses données deux évènements supplémentaires peuvent vous permettre de voir l'avancement : SendComplete qui prévient quand le transfert est terminé, et SendProgress qui permet de savoir le nombre d'octets envoyés. Comme vous avez pû le constater, chaque instruction encoyée se termine par vbCrLf qui permet de dire au serveur que c'est la fin de l'instruction. Partie III : La réception d'e-mail: Pour la réception nous allons contruire une nouvelle Form afin de lire les mails. Ensuite vous devez coller sur votre Form le contrôle lui même :
Cette form se divise en deux parties. La partie du haut concernant la
connexion : La partie du bas compte 3 champ : Le code que je fournis est des plus basiques.
C'est juste pour montrer que l'utilisation des sockets est toujours la même
chose. Le tout est de savoir ce que vous recevez et ce que vous devez envoyer.
Pour cela je vous renvoie aux différentes RFC ou alors à votre propre cahier
des charges si vous développez votre propre protocole de communication.
Remarque : Documents réalisés par Sébastien Curutchet |
Copyright © 2000-2012 - www.developpez.com