|
Tutoriaux
- TurnoPower Internet Profesionnal - Récupèrer les
sujets de vos emails |
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.
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".
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; |
|
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] [
tippop3client.zip]
Auteur : Yoann
Site internet : http://delphipage.free.fr/
|
|
|