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

C++Builder Discussion :

Pièce attachée dans un Email


Sujet :

C++Builder

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

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut Pièce attachée dans un Email
    Bonjour,
    j'utilise un TPop3 pour lire des Emails.
    Je voudrais savoir comment télécharger les pièces jointes, lorsqu'il y en a.
    J'ai trouvé un morceau de code écrit en DELPHI :
    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
    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
    C'est la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If IdMessage1.MessageParts.Items[j] is TIdAttachment
    que je parviens pas à retranscrire en C++ Builder (XE2).

    La ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IdMessage.MessageParts.Items[j] is TIdText
    se retranscrit en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TIdMessagePart *Part2 = aIdMessage->MessageParts->Items[j];
    if (IsHeaderMediaType(Part2->ContentType, "text/plain"))
    Merci de vote aide.
    Gilbert PASQUALINI

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    un exemple de solution
    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
     
             TIdText * mtextContent;
    	 TIdAttachment* mAttach;
    	 IdPOP31->Connect();
    	 int nbMsg=IdPOP31->CheckMessages();
    	 for (int i = 0; i < nbMsg; i++) {
    	   IdPOP31->Retrieve(i,IdMessage1);
    	   if (IdMessage1->MessageParts->Count> 0) {
    		 for (int ArrachCount = 0; ArrachCount <IdMessage1->MessageParts->Count ; ArrachCount++) {
    			 mtextContent=dynamic_cast <TIdText*> (IdMessage1->MessageParts->Items[ArrachCount]);
    			   if (mtextContent){
    			 //ShowMessage(mAttach->Body->Text);
    			   mAttach=dynamic_cast <TIdAttachment*> (IdMessage1->MessageParts->Items[ArrachCount]);
    			     if(!mAttach->FileName.IsEmpty()) {
    		                 //ShowMessage("document attaché");
    			         mAttach->SaveToFile(mAttach->FileName);
    			      }
    			  }
    		     }
    		 }
    	   }
    	  IdPOP31->Disconnect();
    	  ShowMessage("fin du traitement");
    }
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Merci pour cette réponse.
    Je vais l'utiliser et vous tiendrai au courant.
    Gilbert PASQUALINI

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

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    J'ai suivi le bon conseil.
    Voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    NbParts = fPop3->aIdMessage->MessageParts->Count;
    	NbPieces = 0;
    	for(j = 0; j < NbParts; j++)
    	{
    		TIdAttachment *Attachment = dynamic_cast<TIdAttachment*>(fPop3->aIdMessage->MessageParts->Items[j]);
    		if(!Attachment) continue;
    		NbPieces++;
    		usNomFichier = Attachment->FileName;
    		SaveDialog1->FileName = usNomFichier;
    		if(!SaveDialog1->Execute(NULL)) continue;
    		Attachment->SaveToFile(SaveDialog1->FileName);
    	}
    	if(NbPieces == 0) ShowMessage("Pas de pièce attachée" );
    Cela fonctionne très bien.
    Merci encore.
    Gilbert PASQUALINI

Discussions similaires

  1. afficher les images pièces-jointes dans un email html
    Par flasheur dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/11/2010, 20h22
  2. [MySQL] envoyer fichier chargé par formulaire an tant que pièce joint dans l'Email de destination
    Par all4youweb dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/07/2010, 10h35
  3. [WD-2007] Pas de pièce jointe dans un emailing
    Par jpflamand dans le forum Word
    Réponses: 1
    Dernier message: 30/06/2010, 13h00
  4. [AC-2003] Ajout de HTML et pièces jointes dans un email
    Par Thotho-Maxime dans le forum VBA Access
    Réponses: 4
    Dernier message: 24/07/2009, 10h46
  5. [VBA]Pièces jointes dans un Email
    Par Gabout dans le forum VBA Access
    Réponses: 7
    Dernier message: 15/04/2007, 14h27

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