IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Comment extraire les e-mails d'un fichier texte ?


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 99
    Points : 46
    Points
    46
    Par défaut Comment extraire les e-mails d'un fichier texte ?
    Salut,

    Cela est facile sous PHP que je connais un peu mieux mais sous Delphi, je ne sais pas comment m'y prendre. Je veux tout juste extraire les emails d'un fichier texte. Comment faire ?

    Merci d'avance

    Stephane

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Salut;

    comment sont-ils ordonnés ?
    taille du fichier ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Salut,

    Citation Envoyé par pdtor Voir le message
    Salut,

    Cela est facile sous PHP que je connais un peu mieux mais sous Delphi, je ne sais pas comment m'y prendre. Je veux tout juste extraire les emails d'un fichier texte. Comment faire ?

    Merci d'avance

    Stephane
    le code suivant extrait les adresses e-mails d'un Memo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    function Extraire_Emails(const Input: String; out Emails: TStringList): Boolean;
    var
      I : Integer;
      Buffer : String;
      Tokens : TStringList;
    begin
      Result := False;
      Tokens := TStringList.Create;
      Emails := TStringList.Create;
      Try
        Tokens.Delimiter := #32;
        Tokens.DelimitedText := Input;
        For I := 0 To Tokens.Count - 1 Do
          begin
          Buffer := Tokens.Strings[I];
          If Length(Buffer) < 5 Then Continue;
          If (Pos('@',Buffer) > 1) And
             (Pos('.',Buffer) > 3) And
             (Pos('.',Buffer) < Length(Buffer)) Then
             begin
             Emails.Add(Buffer);
          end;
        end;
        Result := True;
      Finally
        Tokens.Free;
      end;
    end;
    Pour l'appeler à partir d'un bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Emails: TStringList;
      I : Integer;
    begin
      If Extraire_Emails(Memo1.Lines.Text,Emails) Then
        begin
        For I := 0 To Emails.Count - 1 Do
          begin
          ShowMessage(Emails.Strings[I]);
        end;
        Emails.Free;
      end;
     
    end;
    Bonne chance.

    NABIL74

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 99
    Points : 46
    Points
    46
    Par défaut
    Merci pour votre aide qui m'est tres precieuse!

    Voici le contenu type de ce fichier. C'est le carnet d'adresses de Mozilla Thunderbird:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    // <!-- <mdb:mork:z v="1.4"/> -->
    < <(a=c)> // (f=iso-8859-1)
      (B8=Custom2)(B9=Custom3)(BA=Custom4)(BB=Notes)(BC=LastModifiedDate)
      (BD=RecordKey)(BE=AddrCharSet)(BF=LastRecordKey)
      (C0=ns:addrbk:db:table:kind:pab)(C1=ListName)(C2=ListNickName)
      (C3=ListDescription)(C4=ListTotalAddresses)(C5=LowercaseListName)
      (C6=ns:addrbk:db:table:kind:deleted)
      (80=ns:addrbk:db:row:scope:card:all)
      (81=ns:addrbk:db:row:scope:list:all)
      (82=ns:addrbk:db:row:scope:data:all)(83=FirstName)(84=LastName)
      (85=PhoneticFirstName)(86=PhoneticLastName)(87=DisplayName)
      (88=NickName)(89=PrimaryEmail)(8A=LowercasePrimaryEmail)
      (8B=SecondEmail)(8C=DefaultEmail)(8D=CardType)(8E=PreferMailFormat)
      (8F=PopularityIndex)(90=AllowRemoteContent)(91=WorkPhone)(92=HomePhone)
      (93=FaxNumber)(94=PagerNumber)(95=CellularNumber)(96=WorkPhoneType)
      (97=HomePhoneType)(98=FaxNumberType)(99=PagerNumberType)
      (9A=CellularNumberType)(9B=HomeAddress)(9C=HomeAddress2)(9D=HomeCity)
      (9E=HomeState)(9F=HomeZipCode)(A0=HomeCountry)(A1=WorkAddress)
      (A2=WorkAddress2)(A3=WorkCity)(A4=WorkState)(A5=WorkZipCode)
      (A6=WorkCountry)(A7=JobTitle)(A8=Department)(A9=Company)
      (AA=_AimScreenName)(AB=AnniversaryYear)(AC=AnniversaryMonth)
      (AD=AnniversaryDay)(AE=SpouseName)(AF=FamilyName)(B0=DefaultAddress)
      (B1=Category)(B2=WebPage1)(B3=WebPage2)(B4=BirthYear)(B5=BirthMonth)
      (B6=BirthDay)(B7=Custom1)>
     
    <(90=5)(81=)(82=holyworks10@gmail.com)(80=0)(85=2)(92=4994290c)(83=1)
      (84=andrew.sch32@focus-siso.org)(86=ten@hotmail.com)(88=4882c586)
      (87=3)(89=dsouza@ymail.com)(8A=4)(8B=Deano)(8C=Martin)(8D=Deano Martin)
      (8E=Deelow)(8F=deelowmartin@me.com)>
    {1:^80 {(k^C0:c)(s=9)} 
      [1:^82(^BF=5)]
      [1(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^82)(^8A^82)(^8B=)(^8C=)
        (^8D=)(^8E=0)(^8F=2)(^90=0)(^91=)(^92=)(^93=)(^94=)(^95=)(^96=)
        (^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=)(^A1=)
        (^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=)(^AC=)
        (^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=)(^B7=)
        (^B8=)(^B9=)(^BA=)(^BB=)(^BC^92)(^BD=1)]
      [2(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^84)(^8A^84)(^8B=)(^8C=)
        (^8D=)(^8E=0)(^8F=0)(^90=0)(^91=)(^92=)(^93=)(^94=)(^95=)(^96=)
        (^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=)(^A1=)
        (^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=)(^AC=)
        (^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=)(^B7=)
        (^B8=)(^B9=)(^BA=)(^BB=)(^BC=0)(^BD=2)]
      [3(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^86)(^8A^86)(^8B=)(^8C=)
        (^8D=)(^8E=0)(^8F=1)(^90=0)(^91=)(^92=)(^93=)(^94=)(^95=)(^96=)
        (^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=)(^A1=)
        (^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=)(^AC=)
        (^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=)(^B7=)
        (^B8=)(^B9=)(^BA=)(^BB=)(^BC^88)(^BD=3)]
      [4(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^89)(^8A^89)(^8B=)(^8C=)
        (^8D=)(^8E=0)(^8F=0)(^90=0)(^91=)(^92=)(^93=)(^94=)(^95=)(^96=)
        (^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=)(^A1=)
        (^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=)(^AC=)
        (^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=)(^B7=)
        (^B8=)(^B9=)(^BA=)(^BB=)(^BC=0)(^BD=4)]
      [5(^83^8B)(^84^8C)(^85=)(^86=)(^87^8D)(^88^8E)(^89^8F)(^8A^8F)(^8B=)
        (^8C=)(^8D=)(^8E=2)(^8F=0)(^90=1)(^91=)(^92=)(^93=)(^94=)(^95=)
        (^96=)(^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=)
        (^A1=)(^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=)
        (^AC=)(^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=)
        (^B7=)(^B8=)(^B9=)(^BA=)(^BB=)(^BC=0)(^BD=5)]}
     
    @$${1{@
    <(93=49951b45)>[-1:^80(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^82)
        (^8A^82)(^8B=)(^8C=)(^8D=)(^8E=0)(^8F=3)(^90=0)(^91=)(^92=)(^93=)
        (^94=)(^95=)(^96=)(^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)
        (^9F=)(^A0=)(^A1=)(^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)
        (^AA=)(^AB=)(^AC=)(^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)
        (^B5=)(^B6=)(^B7=)(^B8=)(^B9=)(^BA=)(^BB=)(^BC^93)(^BD=1)]
    @$$}1}@
     
    @$${3{@
    <(94=49951c72)>[-1:^80(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^82)
        (^8A^82)(^8B=)(^8C=)(^8D=)(^8E=0)(^8F=4)(^90=0)(^91=)(^92=)(^93=)
        (^94=)(^95=)(^96=)(^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)
        (^9F=)(^A0=)(^A1=)(^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)
        (^AA=)(^AB=)(^AC=)(^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)
        (^B5=)(^B6=)(^B7=)(^B8=)(^B9=)(^BA=)(^BB=)(^BC^94)(^BD=1)]
    @$$}3}@
     
    @$${4{@
    @$$}4}@
     
    @$${6{@
    <(95=499525bc)>[-1:^80(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^82)
        (^8A^82)(^8B=)(^8C=)(^8D=)(^8E=0)(^8F=5)(^90=0)(^91=)(^92=)(^93=)
        (^94=)(^95=)(^96=)(^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)
        (^9F=)(^A0=)(^A1=)(^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)
        (^AA=)(^AB=)(^AC=)(^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)
        (^B5=)(^B6=)(^B7=)(^B8=)(^B9=)(^BA=)(^BB=)(^BC^95)(^BD=1)]
    @$$}6}@

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    la solution simple consiste à parcourir la fichier séquentiellement, tu peux utiliser le code fourni par NABIL seule problème c'est le nettoyage de l'adresse elle même.

    une solution propre serait de savoir l'entête du fichier du carnet d'adresse, et là on se place directement là où débute les adresses. De même il faudrait savoir l'encodage d'une ligne comme ça l'extraction de l'adresse se fera aisement.

    Cordialement.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Bonjour,

    la solution simple consiste à parcourir la fichier séquentiellement, tu peux utiliser le code fourni par NABIL seule problème c'est le nettoyage de l'adresse elle même.
    Je suis d'accord avec notre ami Just-Soft .Après avoir extrait les e-mails,il faut les nettoyer.

    Dans ce cas, tu peux utiliser le composant "RegExpr", il fera l'affaire. Il est gratuit et il permet de vérifier les adresses e-mails et les extrait d'un texte.

    Il est téléchargeable ici: http://www.delphipages.com/uploads/u...me/regexpr.zip

    Aide en français:http://www.delphipages.com/uploads/u...me/RegExpF.zip

    Télécharge-le et puis copie seulement le fichier "RegExpr.pas" dans le répertoire de ton projet.

    Voici comment tu peux utiliser ce composant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    implementation
     uses RegExpr;
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      RegExpr: TRegExpr;
    begin
      ListBox1.Clear;//affichera les e-mails qui seront extrait du memo1
      RegExpr := nil;
      try
        RegExpr := TRegExpr.Create;
        if RegExpr <> nil then begin
          RegExpr.Expression := '[^\w\d\-\.]([\w\d\-\.]+@[\w\d\-]+'
                              + '(\.[\w\d\-]+)+)[^\w\d\-\.]';
          if RegExpr.Exec(Memo1.Text) then
            repeat
              ListBox1.Items.Add(RegExpr.Match[1]);
            until not RegExpr.ExecNext;
        end;
      except
      end;
      RegExpr.Free;
    end;
    Voici les e-mails qui ont été extraits de ton fichier texte:
    Bonne chance.

    NABIL74

  7. #7
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Re;

    je crois que le problème a été résolu d'une bonne façon. Seulement, je pense qu'il faut éviter l'utilisation des composants tiers et essayer de faire mieux. Pour moi, je préfère la deuxième solution qui consiste à avoir la signature du fichier ainsi que l'encodage d'un compte.

    bravo NABIL.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

Discussions similaires

  1. Retrouver les adresses mails dans un fichier texte
    Par bza88 dans le forum Général Java
    Réponses: 10
    Dernier message: 08/01/2014, 07h03
  2. Comment extraire les données d'un fichier txt dans un tableau excel
    Par mirage23 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/11/2012, 09h16
  3. Réponses: 2
    Dernier message: 29/03/2012, 12h54
  4. Réponses: 3
    Dernier message: 11/03/2010, 15h26
  5. Réponses: 5
    Dernier message: 16/03/2005, 22h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo