Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - TurnoPower Internet Profesionnal - Récupèrer les sujets de vos emails

Présentation 

Vous allez maintenant créer votre premier programme en utilisant les composants TurboPower Internet Professionnal. L'exemple de programmation a pour but de récupèrer les sujets de vos emails.
Si vous avez déjà utiliser les composants Indy, vous pourrez remarquer les similitudes et également les différences entre ses composants et les composants TurboPower Internet Professionnal.



Conception visuelle du programme

Pour commencer, ajoutez dans votre fiche (form), un composant TGroupBox, TListBox et TButton. Disposez ses composants comme ci-dessous.



Ensuite, ajoutez un composant TIpPOP3 de l' onglet "iPro" de la palette de composants de Delphi.
Le composant TIpPOP3 permet de récupèrer des emails sur un serveur mail en utilisant le protocole POP3 (Post Office Protocol version 3).

Puis, modifiez la propriété "Caption" de la form en mettant "Exemple avec le composant TIpPOP3". Modifez la propriété "Caption" du composant TGroupBox en insérant "Récupère les sujets des emails". Modifiez le "Caption" du composant TButton en mettant "Connexion".

La partie visuelle est à présent terminée. On passe maintenant à la partie code du programme.


Cliquez deux fois sur le composant TButton pour activer l'événement "OnClick" de celui-ci.


Connexion

Pour se connecter à un serveur POP3, il faut spécifier 3 paramètres : l'hôte, le nom d'utilisateur et le mot de passe. Il n'est pas nécéssaire de spécifier le port de communication.

IpPop3Client1.Username:='xxxx'; //Nom d'utilisateur
IpPop3Client1.Password:='xxxx'; //Mot de passe
IpPop3Client1.ConnectAndLogon('xxxx'); //Se connecte à l'hôte (par exemple pour Free: pop.free.fr)

Contrairement aux composants Indy, avec les composants TurboPower Internet Professionnal, on doit attendre qu'un processus se termine avant de continuer. On utilisera donc les différents événements du composant TIpPOP3 pour effectuer ceci.

Après avoir donc renseigner les différents paramètres de connexion, avant de continuer, il faut attendre un message du serveur POP3 pour savoir si la tâche a été effectuée. Pour cela, on va faire appelle à une procédure que l'on va créer. Cette procédure s'appelle "Wait".

Wait(ptLogon); //Appel la procedure "Wait"

Pour attendre, on effectue une boucle. Lorsque la variable "FTask" ou "FError" est à "True" alors la boucle s'arrête. "Task" est à "True" lorsque l'événement "OnTaskComplete" du composant "TIpPOP3Client" se déclenche.
On utilise l'événement "OnError" du composant "TIpPOP3Client" pour savoir si il y a eu une erreur lors d'une opération. Si il en a une, la boucle s'arrête et dans la suite du programme, on ne va pas récupèrer les emails sur le serveur.


private
{ Déclarations privées }
FTask : TIpPop3Tasks; //La variable "FTask" permet de vérifier si la tâche a été effectuée ou non
FError,FListed,FTopped : Boolean;
procedure Wait(Task : TIpPop3Tasks); //Ses procédures permettent d'attendre que l'opération en cours soit terminée
procedure WaitList;
procedure WaitTop;
end;

procedure
TForm1.IpPop3Client1Error(Sender: TObject; Socket: Cardinal; ErrCode: Integer; const ErrStr: String);
begin
//L'événement "OnError" se déclenche quand une erreur est détecté
FError:=True; //Indique qu'une erreur s'est produite
end;

procedure TForm1.IpPop3Client1TaskComplete(Client: TIpCustomPop3Client; Task: TIpPop3Tasks; Response: TStringList);
begin
//L'événement "OnTaskComplete" se déclenche quand une tâche POP3 est terminé
FTask:=Task; //Indique que la tâche a été effectuée
end;

procedure TForm1.Wait(Task : TIpPop3Tasks);
begin
FTask:=ptNone; //Initialise la variable "FTask" à ptNone ("FTask permet d'indiquer lorsque la tâche, c'est à dire la connexion est terminée")
FError:=False; //Initialise la variable "FError" à False ("FError" permet d'indiquer si il y a une erreur)
repeat //Répéter...
Sleep(100); //Attend 100ms
Application.ProcessMessages; //Interrompt l'exécution du programme pour que Windows puisse traiter la file d'attente des messages des autres sources
until FError or (FTask=Task); //...jusqu'à ce qu'il y est une erreur ou que la tâche soit terminé
end;

On se servira par la suite des variables "FListed" et "FTopped".


Récupèrer les emails

On doit à présent récupèrer le nombre d'email contenu sur le serveur de mail. On utilise alors la méthode "Status".


IpPop3Client1.Status; //"Status" récupère les informations générales sur le serveur POP3 comme par exemple le nombre d'emails (NumMessages)

Maintenant, grâce à la méthode "NumMessages" du composant, on peut connaitre le nombre d'email que l'on a. Il n'est pas nécessaire ici de créer une procédure d'attente car l'opération se fait très rapidement.

Ensuite, on récupère la liste d'informations des emails sur le serveur POP3 grâce à la méthode "ListAll". Par précaution, on vérifie avant si il n'y a pas eu d'erreur.


if FError=False then //Si il n'y a pas d'erreur alors
begin
IpPop3Client1.ListAll; //Récupère la liste d'informations des emails sur le serveur POP3
WaitList; //Appel la procedure "WaitList"
end;

La procédure "WaitList" que l'on crée permet d'attendre que l'opération soit bien terminé avant de continuer. Elle est basé comme la procédure "Wait" que l'on a crée précédemment.


procedure TForm1.IpPop3Client1MultiLineResponse(Client: TIpCustomPop3Client; ResponseTo: TIpPop3States; Response: TStringList);
begin
//L'événement "OnMultiLineReponse" se déclenche quand une réponse multiligne est reçue
//Certaines commandes POP3 sont des réponses multilignes comme par exemple la méthode "ListAll"
if ResponseTo=psList then FListed := True; //Mets la variable "FListed" à True si la liste à été récupèrer
end;

procedure
TForm1.WaitList;
begin
FListed:=False; //Initialise la variable "FListed" ("FListed" permet d'indiquer que les opérations effectuées par la méthode ListAll sont terminées)
FError:=False;
repeat //Répéter...
Sleep(100);
Application.ProcessMessages;
until FError or FListed; //...jusqu'à ce qu'il y est une erreur ou que la liste soit récupèrer
end;

Pour récupèrer les sujets des emails, il faut traiter chaque email un par un. On utilise donc une boucle. Ensuite, on utilise la méthode "Top" du composant pour spécifier et récupèrer l'email que l'on veut traiter grâce à la variable "Numero". L'événement se déclanche et grâce au composant TListBox, on récupère le sujet avec la méthode "Subject"du composant TipPOP 3Client. On fait appel à la procédure "WaitTop" pour savoir si l'opération est terminé. Lorsque c'est le cas, on peut alors passer à l'email suivant.

Var Numero:integer;

for
Numero:=1 to IpPop3Client1.NumMessages do //Pour chaque email (on identifie un email grâce à la variable "Numero")
begin
IpPop3Client1.Top(Numero, 0); //"Top" récupère l'email spécifié par la variable "Numero"
//Le "0" indique que l'on récupère juste l'entête de l'email. L'entête est retournée dans l'événement "OnTop"
WaitTop; //Appel la procedure "WaitTop"
end;

procedure TForm1.IpPop3Client1Top(Client: TIpCustomPop3Client;
MsgTop: TIpMailMessage);
begin
ListBox1.Items.Add(MsgTop.Subject); //Ajoute dans le listbox le sujet de l'email
FTopped := True; //Indique que l'on a récupèrer le sujet de l'email
end;

procedure TForm1.WaitTop;
begin
FTopped := False; //Initialise la variable "FTopped" ("FTopped" permet d'indiquer que le sujet de l'email a été récupèré)
FError := False;
repeat //Répéter...
Sleep(100);
Application.ProcessMessages;
until FError or FTopped; //...jusqu'à ce qu'il y est une erreur ou que l'on est récupéré le sujet de l'email
end;


Déconnexion

Pour se déconnecter du serveur, il suffit d'utiliser la méthode "Quit"

IpPop3Client1.Quit; //Déconnexion

Récupèrer les sujets des emails    [ 11-08-2003 ]
 Exemple d'utilisations du composant TIpPOP3Client.
Télécharger :  [8 Ko] [Télécharger tippop3client.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/

Tous droits réservés - Contacts
Haut de la page