FAQ DelphiConsultez toutes les FAQ

Nombre d'auteurs : 123, nombre de questions : 919, dernière mise à jour : 14 juin 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 IndyIdPOP3 (2)
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 TIdPOP3 de la suite [URL="http://www.indyproject.org/Sockets/index.en.aspx">Indy[/URL] dans sa 9ème version.

Utiliser la suite Indy est assez simple. Posez sur votre fiche un TIdPOP3 (onglet Indy - Clients), un TIdMessage (onglet Indy - Divers) et éventuellement un TIdAntiFreeze (onglet Indy - Divers)
pour éviter que l'application ne se bloque lors des requêtes au serveur (Les composants Indy étant des composants synchrones).

Pour vous connecter à votre serveur, vous aurez besoin de quatre 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

Le principe est le suivant :
Une fois que vous êtes connectés au serveur grâce au composant, vous appelez la fonction CheckMessages qui vous renvoie le nombre de messages présents sur le compte. Avec cette information, vous
récupérez les entêtes de chaque message grâce à une boucle et à la méthode RetrieveHeader.

Le TIdMessage est passé en paramètre à cette dernière pour stocker les informations du message ; il aurait éventuellement pu être créé dynamiquement.

Voici ce que cela donne en code :

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
32
33
34
35
36
37
38
39
40
41
42
43
44
procedure TForm1.btnVerifClick(Sender: TObject); 
var NbrMsgs, i: Integer; 
begin 
  
  lstMsgs.Clear; 
  
  //Renseignement des différentes infos de connexion 
  POP3.Host     := edServeur.Text; 
  POP3.Port     := StrToIntDef(edPort.Text, 110); 
  POP3.Username := edUser.Text; 
  
  //On donne le mot de passe en fonction de l'état de la case à cocher 
  If cbxPass.Checked then 
    POP3.Password := edPass.Text 
  else 
    POP3.Password := ''; 
  
  try 
    try 
      //Connexion au serveur 
      POP3.Connect; 
  
      //On récupère le nombre de messages 
      NbrMsgs := POP3.CheckMessages; 
      lblMsg.Caption := IntToStr(NbrMsgs); 
  
      for i := 1 to NbrMsgs do 
      begin 
        //On récupère l'entête du ième message 
        POP3.RetrieveHeader(i, idMsg); 
        //Affichage de quelques informations dans la liste 
        lstMsgs.Items.Add('"' + idMsg.Subject + '" de ' + idMsg.From.Address); 
        idMsg.Clear; 
      end; 
  
    except 
      on e: exception do ShowMessage(e.Message); 
    end; 
  finally 
    //Le travail est terminé, on se déconnecte 
    POP3.Disconnect; 
  end; 
  
end;

Dans ce code :
  • lstMsgs 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

C'est tout ce qu'il y a à faire !

Mis à jour le 26 janvier 2014 Bestiol

Pour cela, il vous faut deux composants : TIdPop3 et TIdMessage. Et il vous faut rajouter dans la clause uses de votre unité : IdAttachment et IdText.

Dans l'exemple ci-dessous, on va lister tous les mails et sauvegarder leur contenu sur le disque dur.

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
32
33
34
  
Var 
  i ,j : integer; 
begin 
  // On se connecte au compte mail si ce n'est pas déjà fait 
  if not IdPop3.connected then 
    idPop3.connect; 
  
  // On va boucler du premier au dernier message sur le compte 
  for i := 1 to idPop3.CheckMessages do 
  begin 
    // On récupère le message complet 
    idPop3.Retrieve(i,IdMessage); 
  
    // Si on a plusieurs parties dans le mail alors on a une pièce jointe  
    if IdMessage.MessageParts.Count > 0 then 
      for j := 0 to IdMessage.MessageParts.count -1 do 
      begin 
        // Est-ce une partie texte du mail ? 
        if IdMessage.MessageParts.Items[j] is TIdText then 
        begin 
          // A vous de traiter comme bon vous semble cette partie du mail  
          Showmessage(TIdText(IdMessage.MessageParts.Items[j]).Body.text); // Par exemple           
        end; 
  
        // Est-ce une pièce jointe ? 
         if IdMessage1.MessageParts.Items[j] is TIdAttachment then 
           With TIdAttachment(IdMessage1.MessageParts.Items[j]) do 
             if not FileExists('C:\Users\C:\Users\xxx\xxx\xxxx\' + FileName) then 
                 // On sauvegarde le fichier 
                 SaveTofile('C:\Users\xxx\xxx\xxxx\' + Filename); 
      end; // for j 
   end; // for i 
end;

Mis à jour le 9 avril 2014 elecpic Rayek

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.

 
Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -

Partenaire : Hébergement Web