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

Delphi Discussion :

problème de sauvegarde de pièce jointe Indy 9


Sujet :

Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Points : 225
    Points
    225
    Par défaut problème de sauvegarde de pièce jointe Indy 9
    Bonjour,

    j'ai un problème pour récuppérer les pièces joints de mon message :

    voici le code :

    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
     
         //Connexion au serveur
          POP3.Connect;
     
          //On récupère le nombre de messages
          NbrMsgs := POP3.CheckMessages;
          lblMsg.Caption := IntToStr(NbrMsgs);
          ProgressBar1.Min := 0;
          ProgressBar1.Max := NbrMsgs;
          ProgressBar1.Position := 0;
          for i := 1 to NbrMsgs do
          begin
            //On récupère l'entête du ième message
            //POP3.RetrieveHeader(i, idMsg);
            POP3.Retrieve(i, idMsg);
     
            Memo2.Lines.Text := 'idMsg.MsgId:'+idMsg.MIMEBoundary.Boundary+char(10);
            Memo2.Lines.Text := Memo2.Lines.Text+'--->>Recipients:'+idMsg.Recipients.EMailAddresses+char(10);;
            Memo2.Lines.Text := Memo2.Lines.Text+'--->>BccList'+idMsg.BccList.EMailAddresses+char(10);
            Memo2.Lines.Text := Memo2.Lines.Text+'--->>CCList:'+idMsg.CCList.EMailAddresses+char(10);
            Memo2.Lines.Text := Memo2.Lines.Text+'--->>ReplyTo:'+idMsg.ReplyTo.EMailAddresses+char(10);
            Memo2.Lines.Text := Memo2.Lines.Text+'--->>FROM:'+idMsg.From.Address+char(10);
            Memo2.Lines.Text := Memo2.Lines.Text+'--->>OBJET:'+idMsg.Subject+char(10);
            Memo2.Lines.Text := Memo2.Lines.Text+'--->>AttachmentCount:'+IntTostr(idMsg.MessageParts.AttachmentCount);
            idMsg.MessageParts.CountParts;
            if idMsg.MessageParts.Count > 0 then
            begin
                for j := 0 to idMsg.MessageParts.count -1 do
                begin
                  try
                      if Uppercase (idMsg.MessageParts.Items[j].DisplayName)='TIDTEXT'then
                      begin
                          Memo2.Lines.Text := Memo2.Lines.Text+'>>--'+IntTostr(J)+'-->>'+idMsg.MessageParts.Items[j].DisplayName+'-------------'+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+'--->>Boundary:'+idMsg.MessageParts.Items[j].Boundary+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+'--->>DisplayName:'+idMsg.MessageParts.Items[j].DisplayName+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+'--->>StoredPathName:'+idMsg.MessageParts.Items[j].StoredPathName+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+'--->>ContentTransfer:'+idMsg.MessageParts.Items[j].ContentTransfer+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+'--->>ContentType:'+idMsg.MessageParts.Items[j].ContentType+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+'--->>Headers.Text:'+idMsg.MessageParts[j].Headers.Text+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+'--->>ExtraHeaders.Text:'+idMsg.MessageParts[j].ExtraHeaders.Text+char(10);
     
                          Memo2.Lines.Text := Memo2.Lines.Text+' /*************************************/'+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+'--->>ALL Body:'+TIdText(idMsg.MessageParts.Items[j]).Body.Text+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+' /*************************************/'+char(10);
                      end;
                      if Uppercase (idMsg.MessageParts.Items[j].DisplayName)='TIDATTACHMENT'then
                      begin
                          Memo2.Lines.Text := Memo2.Lines.Text+' /*************************************/'+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+'--->>ContentDisposition:'+TIdAttachment(idMsg.MessageParts.Items[j]).ContentDisposition+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+'--->>ContentType:'+TIdAttachment(idMsg.MessageParts.Items[j]).StoredPathName+char(10);
                          Memo2.Lines.Text := Memo2.Lines.Text+' /*************************************/'+char(10);
                      end;
                  except
                      showmessage('I:'+IntTostr(I)+'/J'+IntTostr(J) +'/'+idMsg.Subject);
                  end
                end;
     
            end
            else if    idMsg.MessageParts.Count = 0 then
            begin
                      Memo2.Lines.Text := Memo2.Lines.Text+'--'+IntTostr(0)+'--'+char(10);
                      Memo2.Lines.Text := Memo2.Lines.Text+'--->>Boundary:'+idMsg.MIMEBoundary.Boundary+char(10);
                      Memo2.Lines.Text := Memo2.Lines.Text+'--->>Headers.Text:'+idMsg.Headers.Text+char(10);
                      Memo2.Lines.Text := Memo2.Lines.Text+'--->>ContentTransfer:'+idMsg.ContentDisposition+char(10);
                      Memo2.Lines.Text := Memo2.Lines.Text+'--->>ContentType:'+idMsg.ContentType+char(10);
                      Memo2.Lines.Text := Memo2.Lines.Text+'--->>Headers.Text:'+idMsg.CharSet+char(10);
     
                      Memo2.Lines.Text := Memo2.Lines.Text+' Body:'+idMsg.Body.text+char(10);
            end;
     
            Memo2.Lines.SaveToFile('D:\'+Inttostr(I)+'.TXT');
            Memo2.Lines.Clear;
            idMsg.Clear;
            ProgressBar1.Position := I;
    comme vous pouvez le constater sur la partie ci-dessous, j'ai bien trois partie dans mon mail (idMsg.MessageParts.Count)
    mais pourtant chacune des trois partie est de "type" = TIdText et jamais TiAttachment, pourtant on peu voir que cette partie correspond à pièce jointe


    >>--1-->>TIdText-------------
    --->>Boundary:
    --->>DisplayName:TIdText
    --->>StoredPathName:
    --->>ContentTransfer:
    --->>ContentType:
    --->>Headers.Text:
    --->>ExtraHeaders.Text:
    /*************************************/
    --->>ALL Body:Content-Type: application/msword; name="MYDOC.doc"
    Content-Transfer-Encoding: base64
    Content-Description: 151530492-MYDOC.doc
    Content-Disposition: attachment; filename="MYDOC.doc"

    0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAB
    AAAAUQAAAAAAAAAAEAAAUwAAAAEAAAD+////AAAAAFAAAAD/////////////
    ////////////////////////////////////////////////////////////

    Merci de votre aide

  2. #2
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 306
    Points
    2 306
    Par défaut
    Bonjour,

    as-tu essayé ContentType à la place de DisplayName ?

    @++
    Dany

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 875
    Points : 11 365
    Points
    11 365
    Billets dans le blog
    6
    Par défaut
    mystère !

    as-tu essayé IdMessage1.ProcessHeaders ?
    et vérifié que IdMessage1.NoDecode:=False...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Points : 225
    Points
    225
    Par défaut
    Oui pour ContentType il est toujours vide par contre je vais essayé ProcessHeaders

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Points : 225
    Points
    225
    Par défaut
    cela ne chaneg rien, peut être qu'il ya un bug avec indy (delphi 7 pro)

  6. #6
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 306
    Points
    2 306
    Par défaut
    re,

    pour le bug je pense pas car j'ai des procédures qui récupèrent des pièces jointes dans des emails avec D7 pro, et je n'ai pas de soucis particulier.
    Par contre je viens de refaire un petit tour dans mon code et je n'utilise pas ContentType, mais ClassName, comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( Mel.MessageParts.Items[i].ClassName = 'TIdAttachment') then...
    Désolé, pour la réponse un peu hâtive.

    @++
    Dany

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Points : 225
    Points
    225
    Par défaut
    merci de cette précision, je vais faire le test

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Points : 225
    Points
    225
    Par défaut
    Bonjour,

    s'était ça

    if ( Mel.MessageParts.Items[i].ClassName = 'TIdAttachment') then...
    Problème résolu

    merci de vos contributions

  9. #9
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 875
    Points : 11 365
    Points
    11 365
    Billets dans le blog
    6
    Par défaut
    avec Indy9 et Delphi5 Pro, pas de souci avec idMsg.MessageParts.Items[j].DisplayName, pour ma part...
    mais content que tu aies une solution !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Problème de sauvegarde de pièce jointe
    Par SimKmil dans le forum Excel
    Réponses: 2
    Dernier message: 25/09/2014, 09h25
  2. Problème d'envoi de pièce jointe avec envoi de mail composant Indy
    Par Monromero1 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 15/06/2012, 20h55
  3. Sauvegarde des pièces-Joints automatique
    Par benhamidaa dans le forum Outlook
    Réponses: 1
    Dernier message: 31/12/2007, 08h56
  4. sauvegarde de pièce jointe perdue
    Par eaoibub dans le forum Word
    Réponses: 8
    Dernier message: 31/08/2007, 11h41
  5. [Mail] problème mail html avec pièce jointe
    Par stars333 dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2007, 19h44

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