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 :

Envoi de mail texte avec pièce jointe quelconque


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut Envoi de mail texte avec pièce jointe quelconque
    Bonjour à tous,

    Je viens vers vous car je n'arrive pas à trouver de solution à mon problème. Je cherche à envoyer par mail un backup d'une base de données réalisé préalablement et l'accompagner d'un peu de texte.
    Pour cela, j'ai écrit le code suivant :

    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
    procedure TFMaintenance.actEnvoyerExecute(Sender: TObject);
    var iPos : integer ;
        domaine : string ;
        email : string ;
        SSLHandler : TIdSSLIOHandlerSocketOpenSSL ;
        pwd : string ;
        numero : string ;
        myText : TIdTExt ;
        myAttachment : TIdAttachmentFile ;
    begin
      bSend := true ;
      //On envoie le contenu au développeur//
      email := '' ;
      email := IBTUtilisateur.Lookup('ID',FDmKSF.idUser,'MAIL') ;
      pwd := '' ;
      pwd := IBTUtilisateur.Lookup('ID',FDmKSF.idUser,'MOT_DE_PASSE') ;
     
      iPos := pos('@',email) ;
      domaine := copy(email,iPos+1,length(email)) ;
     
      //Correspondances//
      if domaine = 'hotmail.fr' then domaine := 'live.fr' ;  
     
      SSLHandler := TIdSSLIOHandlerSocketOpenSSL.create(nil) ;
     
      try
        try
          SSLHandler.MaxLineAction := maException ;
          SSLHandler.SSLOptions.Method := sslvTLSv1 ;
          SSLHandler.SSLOptions.Mode := sslmUnassigned ;
          SSLHandler.SSLOptions.VerifyMode := [] ;
          SSLHandler.SSLOptions.VerifyDepth := 0 ;
     
          IdSMTP1.IOHandler := SSLHandler ;
          IdSMTP1.Host := 'smtp.' + domaine ;
          IdSMTP1.Port := 587 ;
          IdSMTP1.Username := email ;
          IdSMTP1.Password := pwd ;
          IdSMTP1.UseTLS := utUseExplicitTLS ;
     
          IdMessage1.Encoding := meMIME;
          IdMessage1.ContentType := 'multipart/mixed';
          IdMessage1.From.Address := email ;
          IdMessage1.Recipients.Add.Address := 'xxxx_xxxx@hotmail.fr' ;
          IdMessage1.Subject := 'test' ;
          IdMessage1.UseNowForDate := true;
     
          {Ajout du texte}
          myText := TIdText.Create(IdMessage1.MessageParts);
          myText.Body.Assign(RichEdit1.Lines);
          myText.ContentType := 'text/plain';
          myText.CharSet := 'ISO-8859-1';
          myText.ContentTransfer := '8bit';
     
          if CheckBox1.Checked then
          begin
            actRealiserBackup.Execute ;
          end ;
     
          {Ajout de la pièce jointe}
          myAttachment := TIdAttachmentFile.Create(IdMessage1.MessageParts,back);
          myAttachment.ContentType := 'text/html';
          myAttachment.ContentDisposition := 'attachment';
          myAttachment.FileName := ExtractFileName(back);
     
        IdSMTP1.Connect ;
          IdSMTP1.Send(idMessage1);
          IdSMTP1.Disconnect;
     
          Dialogs.MessageDlg('Le mail a bien été envoyé au service client.', mtInformation,
              [mbOk], 0, mbOk)
        finally
          SSLHandler.Free ;
          IdMessage1.MessageParts.Clear ;
        end;
        except on E:Exception do
          try
          IdSMTP1.Port := 25 ;
          IdSMTP1.Connect ;
          IdSMTP1.Send(idMessage1);
          IdSMTP1.Disconnect;
          Dialogs.MessageDlg('Le mail a bien été envoyé au service client.', mtInformation,
              [mbOk], 0, mbOk)
          except
          Dialogs.MessageDlg('Une erreur est survenue lors de l''envoi. Veuillez vérifier votre connexion à Internet.', mtError,
            [mbOk], 0, mbOk) ;
          end;
        end;
    end ;
    Le souci, c'est que ce mail, je l'envoie vers une adresse @hotmail.fr et quand je me connecte à l'adresse hotmail, je reçois bien un mail avec le texte comme je l'ai écrit dans mon application. Le problème vient de la pièce jointe. En fait, quand je consulte mon mail directement sur le navigateur Hotmail/Outlook, il y a un trombone mais une fois le mail ouvert, pas de pièce jointe. Et si je teste via le logiciel Windows Live Mail, je vois une pièce jointe ATT000xx.dat.

    Je précise que j'ai ce problème avec tout type de pièce jointe (doc, pdf, zip...)

    Pouvez-vous m'aider à voir d'où vient le problème svp ?

    Merci encore.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    As-tu essayé de simplement supprimé ceci ?

    Car forcé le type HTML sur un fichier binaire Zip ???
    Voir cette proposition de Rayek si cela ne suffit pas mais je n'ai jamais eu besoin d'un truc aussi compliqué !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    myAttachment.ContentType := 'text/html';
          myAttachment.ContentDisposition := 'attachment';
          myAttachment.FileName := ExtractFileName(back);
    Voici une version élaguée du dernier code que j'ai utilisé pour envoyer des pièces jointes (j'avais d'ailleurs juste rajouter cette partie en C++2007 et C++XE2)
    Code c++ : 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
     
    //---------------------------------------------------------------------------
    //                                  TMail                                   -
    //---------------------------------------------------------------------------
    /*static*/ bool __fastcall TMail::SendAction(const DATA_ACTION_xxx &ADataAction,
                            const TFileName FileAttache)
    {
      bool Result = false;
     
      ...
      if (ChargePreferenceSMTP())
      {
        TIdSMTP *IdSMTPMail = new TIdSMTP(NULL);
        IdSMTPMail->Host = FSMTPConf->ServerSMTP;
        IdSMTPMail->Port = FSMTPConf->PortSMTP;
        // Login pour un mode Hors-FAI
        // TODO SSL TLS
        if (FSMTPConf->UseAuthLogin)
        {
          IdSMTPMail->Username = FSMTPConf->Login;
          IdSMTPMail->Password = FSMTPConf->PassWord;
        }
     
    #ifdef _BDS5
        TIdAttachmentFile *ptrAttachmentFile = NULL;
    #else
        TIdAttachment *ptrAttachmentFile = NULL;
    #endif
        TIdMessage *ptrIDMessage = NULL;
        try
        {
          IdSMTPMail->Connect();
          ptrIDMessage = new TIdMessage(NULL);
     
          ptrIDMessage->From->Name = ...
          ptrIDMessage->From->Address = ...
     
          ptrIDMessage->Subject = ...
          ...
     
          szMessage = ...
          ptrIDMessage->Body->Add(szMessage);
     
          //------------attachment file
          if ( ! FileAttache.IsEmpty())
          {
            if (FileExists(FileAttache))
            {
      #ifdef _BDS5
              ptrAttachmentFile = new TIdAttachmentFile(ptrIDMessage->MessageParts, FileAttache);
      #else
              ptrAttachmentFile = new TIdAttachment(ptrIDMessage->MessageParts, FileAttache);
      #endif
              szMessage = ...
              ptrIDMessage->Body->Add(szMessage);
              ptrIDMessage->Body->Add("");
            }
          }
     
          IdSMTPMail->Send(ptrIDMessage);
          Result = true;
     
          IdSMTPMail->Disconnect();
        }
        catch(Exception *e)
        {
          xxx::DefaultInstance->Trace(...);
        }
     
        if (ptrAttachmentFile)
          delete ptrAttachmentFile;
     
        if (ptrIDMessage)
        	delete ptrIDMessage;
     
        delete IdSMTPMail;
      }
      else
        xxx::DefaultInstance->Trace(...);
     
      return Result;
    }
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    En enlevant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myAttachment.ContentType := 'text/html';
    , j'ai toujours le même message vide (enfin toujours le fichier .DAT bizarre).
    J'ai cru comprendre que cela pouvait fortement provenir du content-type mais quoi que je mette, je n'obtiens pas ma pièce jointe en réception.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Dans mon code C++, je ne forçais ni le ContentType ni le Encoding !
    je ne touche ni au TIdMessage ni au TIdAttachmentFile
    Je laisse l'objet le plus neutre que possible !

    Note que tout est créé à la volée aussi bien le TIdSMTP et TIdMessage !
    Je crois qu'en les posant sur une Form, cela met des valeurs par défaut assez pourrie !
    Fait un code sans passer par le Builder, le mieux est de faire cela dans une simple unit pour avoir un code réutilisable !
    J'ai commencé pour ma part ce travail pour l'envoi de mail simple
    Si j'ai l'occasion de le faire pour une pièce jointe, je le publierais.

    Et je n'avais aucun soucis, j'envoyais des AVI, dans le mail, la pièce jointe pouvait être lu directement par WMP11 ou VLC

    En Delphi7, je l'ai fait mais je ne m'en rappele plus, j'ai copié le code de la FAQ Comment envoyer un e-mail ?
    Et je crois que j'ai eu de la chance pour que cela fonctionne presque du 1er coup !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    En fait, dans ma messagerie Hotmail, je ne vois pas la pièce jointe. Si je m'envoie ce mail sur GMail, je vois une pièce jointe noname. Si je l'enregistre et que je rajoute l'extension .pdf, je peux l'ouvrir et je découvre mon pdf nickel. Du coup, je me demande s'il n'y a pas un problème dans la façon de rattacher simplement le fichier au mail (et qui ferait que le fichier est mal transmis aux messageries cibles) ?

  6. #6
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par Heremion Voir le message
    En fait, dans ma messagerie Hotmail, je ne vois pas la pièce jointe. Si je m'envoie ce mail sur GMail, je vois une pièce jointe noname. Si je l'enregistre et que je rajoute l'extension .pdf, je peux l'ouvrir et je découvre mon pdf nickel. Du coup, je me demande s'il n'y a pas un problème dans la façon de rattacher simplement le fichier au mail (et qui ferait que le fichier est mal transmis aux messageries cibles) ?
    Changez le contenu de la propriété ContentType en fonction du type de pièces jointes, par exemple, on a
    1. pour un fichier Zip :myAttachment.ContentType := 'application/x-zip-compressed';,
    2. pour un pdf :myAttachment.ContentType := 'application/pdf';.
    Philippe.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,
    Changez le contenu de la propriété ContentType en fonction du type de pièces jointes, par exemple, on a
    1. pour un fichier Zip :myAttachment.ContentType := 'application/x-zip-compressed';,
    2. pour un pdf :myAttachment.ContentType := 'application/pdf';.
    Bonjour PH. B.!

    Je vais essayer ça mais alors quand j'essaie d'envoyer un backup de ma base Firebird qui est un .FBK, que dois-je mettre dans le content-type?

    Edit :
    Je viens d'essayer et j'ai toujours le même fichier noname en arrivée. Il semblerait que de renseigner le content-type à application/pdf ne donne pas l'effet escompté.

  8. #8
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Question bête : Et en faisant l'essai avec d'autres composants comme ICS ou IP*Works, le problème est identique ??

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    Euh désolé Papy, mais c'est quoi ICS ou IP*Works ?

  10. #10
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    ICS est une suite de composants réseau qui permettent entre autres l'envoi d'email.

    IP*Works est une autre bibliothèque du même genre fournie en version réduite (mais néanmoins tout à fait utilisable) avec les dernières versions de Delphi.

    J'utilise les 2 (ICS dans une application Delphi 5 et IP*Works dans XE2) sans problèmes.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    Tu sais où on peut les télécharger ? Je suis sous Delphi 2009 moi, ça va fonctionner ?

  12. #12
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    euh ... IP*Works, si tu as un Delphi XE minimum, tu as du avoir accès à une page de téléchargements supplémentaires quand tu as installé l'IDE

    Pour ICS, il suffisait de cliquer sur le mot ICS de mon message
    Pour ICS, il y a différentes versions compatibles même avec Delphi 1 .

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    euh ... IP*Works, si tu as un Delphi XE minimum, tu as du avoir accès à une page de téléchargements supplémentaires quand tu as installé l'IDE

    Pour ICS, il suffisait de cliquer sur le mot ICS de mon message
    Pour ICS, il y a différentes versions compatibles même avec Delphi 1 .
    Mouais bizarre, j'essaie d'installer le composant mais ça plante avec pas mal d'erreur à la compilation pour l'install de la version correspondant à ma version de delphi :/

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    En fait, je me demande s'il n'y a pas un petit blocage au niveau de tous les content-type puisque dans mon code, j'en vois certains pour les IdText, d'autres pour les IdAttachmentFile et encore d'autres...
    Au final, dans mon code construisant le mail, je me retrouve avec les content-type suivants :
    - application/pdf
    - multipart/mixed
    - text/html
    - image/png

    Est-ce qu'il n'y a pas un ordre dans les constructions d'un mail (TIdText, TIdAttachment, etc...) et dans les content-type, j'avoue que je m'y perds un peu.

  15. #15
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par Heremion Voir le message
    En fait, je me demande s'il n'y a pas un petit blocage au niveau de tous les content-type puisque dans mon code, j'en vois certains pour les IdText, d'autres pour les IdAttachmentFile et encore d'autres...
    Au final, dans mon code construisant le mail, je me retrouve avec les content-type suivants :
    - application/pdf
    - multipart/mixed
    - text/html
    - image/png

    Est-ce qu'il n'y a pas un ordre dans les constructions d'un mail (TIdText, TIdAttachment, etc...) et dans les content-type, j'avoue que je m'y perds un peu.
    Il y a des content-type pour chaque partie du mail qui est multipart/mixed.
    J'ai testé votre code en y retirant toute la partie relative à TIdText que je n'ai pas avec ma version de Indy de Delphi XE2. J'ai pu envoyer un mail avec un pièce jointe au format zip ou pdf comme je l'avais indiqué précédemment.
    Pour un fichier *.fbk ou tout autre fichier binaire "exotique", je tenterais : Content-Type: application/octet-stream;
    Philippe.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,
    Il y a des content-type pour chaque partie du mail qui est multipart/mixed.
    J'ai testé votre code en y retirant toute la partie relative à TIdText que je n'ai pas avec ma version de Indy de Delphi XE2. J'ai pu envoyer un mail avec un pièce jointe au format zip ou pdf comme je l'avais indiqué précédemment.
    Pour un fichier *.fbk ou tout autre fichier binaire "exotique", je tenterais : Content-Type: application/octet-stream;
    Tu as réussi à envoyer un mail donc le corps est pris depuis un contenu html et avec un fichier pdf en pièce jointe ? J'ai beau faire plusieurs essais, j'ai toujours le même problème, même en supprimant la partie IdText.

    Si tu as repris mon code pour essayer, peux-tu me le montrer car je n'y arrive vraiment pas...

  17. #17
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par Heremion Voir le message
    Si tu as repris mon code pour essayer, peux-tu me le montrer car je n'y arrive vraiment pas...
    Voila la procédure que j'ai évoquée dans mon précédent message :
    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
    procedure TForm1.actEnvoyerExecute(Sender: TObject);
    var iPos : integer ;
        domaine : string ;
        email : string ;
        SSLHandler : TIdSSLIOHandlerSocketOpenSSL ;
        pwd : string ;
    //    numero : string ;
    //    myText : TIdTxt ;
        myAttachment : TIdAttachmentFile ;
        back: String;
    begin
      back := 'C:\Temp\MonFichier.zip';
    //  bSend := true ;
      //On envoie le contenu au développeur//
      email := 'monadresse@free.fr' ;
    //  email := IBTUtilisateur.Lookup('ID',FDmKSF.idUser,'MAIL') ;
      pwd := 'MotDePasseFree' ;
    //  pwd := IBTUtilisateur.Lookup('ID',FDmKSF.idUser,'MOT_DE_PASSE') ;
     
      iPos := pos('@',email) ;
      domaine := copy(email,iPos+1,length(email)) ;
     
      //Correspondances//
      if domaine = 'hotmail.fr' then domaine := 'live.fr' ;
     
      SSLHandler := TIdSSLIOHandlerSocketOpenSSL.create(nil) ;
     
      try
        try
    //      SSLHandler.MaxLineAction := maException ;
          SSLHandler.SSLOptions.Method := sslvTLSv1 ;
          SSLHandler.SSLOptions.Mode := sslmUnassigned ;
          SSLHandler.SSLOptions.VerifyMode := [] ;
          SSLHandler.SSLOptions.VerifyDepth := 0 ;
     
          IdSMTP1.IOHandler := SSLHandler ;
          IdSMTP1.Host := 'smtp.free.fr' ;
          IdSMTP1.Port := 465;                  //587 ;
          IdSMTP1.Username := email ;
          IdSMTP1.Password := pwd ;
          IdSMTP1.UseTLS := utUseExplicitTLS ;
     
          IdMessage1.Encoding := meMIME;
          IdMessage1.ContentType := 'multipart/mixed';
          IdMessage1.From.Address := email ;
          IdMessage1.Recipients.Add.Address := 'monadresse@destinataire.net' ;
          IdMessage1.Subject := 'test' ;
          IdMessage1.UseNowForDate := true;
     
          {Ajout du texte}
    //      myText := TIdText.Create(IdMessage1.MessageParts);
    //      myText.Body.Assign(RichEdit1.Lines);
    //      myText.ContentType := 'text/plain';
    //      myText.CharSet := 'ISO-8859-1';
    //      myText.ContentTransfer := '8bit';
     
    //      if CheckBox1.Checked then
    //      begin
    //        actRealiserBackup.Execute ;
    //      end ;
     
          {Ajout de la pièce jointe}
          myAttachment := TIdAttachmentFile.Create(IdMessage1.MessageParts, back);
          myAttachment.ContentType := 'application/x-zip-compressed'; //'text/html';
          myAttachment.ContentDisposition := 'attachment';
          myAttachment.FileName := ExtractFileName(back);
     
          IdSMTP1.Connect ;
          IdSMTP1.Send(idMessage1);
          IdSMTP1.Disconnect;
     
          MessageDlg('Le mail a bien été envoyé au service client.', mtInformation,
              [mbOk], 0, mbOk)
        finally
          SSLHandler.Free ;
          IdMessage1.MessageParts.Clear ;
        end;
        except on E:Exception do
          try
          IdSMTP1.Port := 25 ;
          IdSMTP1.Connect ;
          IdSMTP1.Send(idMessage1);
          IdSMTP1.Disconnect;
          MessageDlg('Le mail a bien été envoyé au service client.', mtInformation,
              [mbOk], 0, mbOk)
          except
          MessageDlg('Une erreur est survenue lors de l''envoi. Veuillez vérifier votre connexion à Internet.', mtError,
            [mbOk], 0, mbOk) ;
          end;
        end;
    end ;
    Philippe.

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    C'est à en devenir dingue ça! Je copie/colle ton code à la place du mien et je reçois toujours le même fichier apparaissant :
    - sous Gmail en tant que noname
    - sous Hotmail en tant que ATT0000XX.dat

    Est-ce qu'il ne manquerait pas quelque chose tout simplement sur mon pc ? Je ne sais pas, un dll, un module, autre qui fait que le même code ne fonctionnerait pas de la même façon entre ta machine et la mienne ?

  19. #19
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    est-ce que le nom de ton fichier contient des espaces, accents ou autre caractères non ASCII ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 59
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    est-ce que le nom de ton fichier contient des espaces, accents ou autre caractères non ASCII ?
    Non le fichier possède des lettres en majuscule, des "_" et des chiffres simplement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Envoyer mails automatiquement avec pièce jointe
    Par couriel dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 31/08/2012, 13h28
  2. e-mails automatiques avec pièce jointe
    Par touche_a_tout dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/02/2012, 10h20
  3. [HTA] SMTP Mail Client avec pièce jointe
    Par hackoofr dans le forum Vos Contributions VBScript
    Réponses: 6
    Dernier message: 24/11/2011, 20h25
  4. [Mail] problème mail html avec pièce jointe
    Par stars333 dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2007, 19h44
  5. [Mail] Problème avec pièce jointe
    Par coco38 dans le forum Langage
    Réponses: 4
    Dernier message: 27/04/2007, 10h14

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