FAQ DelphiConsultez toutes les FAQ

Nombre d'auteurs : 123, nombre de questions : 920, dernière mise à jour : 8 novembre 2019  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).

Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.

L'équipe Delphi de Developpez.com.

Commentez


SommaireComposants ICSTPop3Cli (1)
précédent sommaire suivant
 

Beaucoup de prestataires de services Internet proposent aujourd'hui de se connecter à leurs serveurs de mail grâce au protocole POP3.
Il est possible avec Delphi d'utiliser ce protocole pour lister, par exemple, les messages présents dans une boîte aux lettres électronique.

Voici un exemple avec le composant TPop3Cli de la suite ICS.

À la différence de certains composants comme ceux de la suite Indy, le composant TPop3Cli est asynchrone et fonctionne donc par événements plutôt que "linéairement". La méthode d'approche n'est donc pas la même.

Pour vous connecter à votre serveur, vous aurez besoin de cinq informations :

  • Le serveur POP3 auquel se connecter
  • Le port auquel s'y connecter. En règle générale c'est le port 110
  • Le nom d'utilisateur à utiliser pour la connexion
  • Le mot de passe associé à ce nom d'utilisateur
  • La méthode d'authentification à employer

Après avoir renseigné le composant avec ces informations, il faut appeler la méthode Open qui effectue la connexion au serveur. À noter que le port à renseigner ici n'est pas la valeur 110, mais la chaîne 'pop3'.

Voici le code de connexion :
Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
procedure TForm1.btnVerifClick(Sender: TObject); 
begin 
  
  lstMsgs.Clear; 
  lblMsg.Caption := '-'; 
  
  // Mise à jour des données de connexion 
  POP3.Host     := edServeur.Text; 
  POP3.Port     := edPort.Text; 
  POP3.Username := edUser.Text; 
  
  // On spécifie le mode d'authentification suivant que le mot de passe est activé ou non 
  If cbxPass.Checked then 
  begin 
    POP3.AuthType := popAuthLogin; 
    POP3.Password := edPass.Text 
  end 
  else 
  begin 
    POP3.AuthType := popAuthNone; 
    POP3.Password := ''; 
  end; 
  
  try 
    // Demande de la connexion. Open permet d'effectuer le processus de connexion (connect, user, pass) automatiquement 
    POP3.Open; 
  except 
    on e: exception do 
      ShowMessage(e.Message); 
  end; 
end;
L'appel à Open implique l'envoi de différentes requêtes pour la connexion, auxquelles le serveur va répondre. Lors d'une telle réponse, l'événement OnRequestDone du TPop3Cli est déclenché, fournissant la requête qui vient de se terminer, et l'éventuel code d'erreur renvoyé.
C'est grâce à cet événement que nous allons récupérer les informations des messages.
Voyons déjà un code fonctionnel :
Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TForm1.POP3RequestDone(Sender: TObject; RqType: TPop3Request; 
  Error: Word); 
begin 
  // Ici, on agit en fonction de la requête qui vient de se TERMINER 
  Case RqType of 
    pop3Open   : // Une fois la connexion établie on appelle Stat, qui permet de récupérer le nombre de messages 
                 POP3.Stat; 
    pop3Stat   : begin 
                   // On affiche le nombre de messages 
                   lblMsg.Caption := IntToStr(POP3.MsgCount); 
                   // Retr permet de retrouver les headers du message n°MsgNum  
                   POP3.MsgNum := 1; 
                   POP3.Retr; 
                 end; 
    pop3Retr   : if Error = 0 then // Si pas d'erreur, c'est-à-dire si le message n°MsgNum a été trouvé 
                 begin 
                   // On prend les infos qui nous intéressent 
                   lstMsgs.Items.Add('"' + POP3.HeaderSubject + '" de ' + POP3.HeaderFrom); 
                   //Et on passe au message suivant 
                   POP3.MsgNum := POP3.MsgNum + 1; 
                   POP3.Retr; 
                 end 
                 else 
                   // Si le message n'existe pas, le listing est fini, on se déconnecte 
                   POP3.Quit; 
  end; 
end;
Dans ce code :
  • stMsgs est une TListBox qui reçoit un Item par message trouvé
  • lblMsg est un TLabel dans lequel on affiche le nombre de messages total
  • idMsg et POP3 sont bien sûr nos TIdMessage et TIdPOP3

L'ordre des différents éléments du Case .. of est l'ordre dans lequel vont se déclencher les événements.
En premier lieu, lorsque la connexion est établie on envoie une requête Stat, qui nous permettra de récupérer le nombre de messages et de l'afficher.
Ensuite pour lister les différents messages, on récupère l'entête de chacun en utilisant la requête Retr et en augmentant l'ID du message à retrouver, jusqu'à ce qu'un code d'erreur nous informe que nous sommes en fin de liste.
On peut alors fermer la connexion.

Mis à jour le 25 janvier 2014 Bestiol

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2019 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.