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

Web & réseau Delphi Discussion :

envoyer une pièce jointe (pdf) avec le composant Tidmessage (delphi 10.4.2)


Sujet :

Web & réseau Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut envoyer une pièce jointe (pdf) avec le composant Tidmessage (delphi 10.4.2)
    Bonjour,

    J'arrive a envoyer un mail format text avec avec le composant TidMessage.

    Ce que je n'arrive pas à faire c'est trouver la bonne syntaxe pour ajouter une pièce jointe (format pdf ou texte par exemple)

    J'ai cru comprendre qu'il fallait créé le messageparts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TIdAttachment.Create(IdMessage1.MessageParts)
    Mais après ?
    J'ai essayé plusieurs syntaxes de add ou de loadfromfile mais j'ai toujours une erreur ...

    Le code est tout simple mais je n'y arrive pas ...
    Merci d'avance pour vos lumières
    Je précise que j'ai potassé l'excellent tutoriel de Gilles Vasseur https://gilles-vasseur.developpez.co...-robin/#LVII-B, mais la pièce jointe n'est pas abordé pour le SMTP

    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
    procedure TForm1.Button2Click(Sender: TObject);
    var
       tpj: tidattachment;
    begin
    //Efface l'entête et le corps du message
    IdMessage1.Clear;
    //Adresse email de l'expediteur
    IdMessage1.From.Text :=Edit1.Text;
    //Adresse email où le destinataire pourra répondre
    IdMessage1.ReplyTo.EMailAddresses:=Edit1.Text;
    //Adresse email du destinataire
    IdMessage1.Recipients.EMailAddresses:=Edit2.Text;
    //Date de l'envoi du message
    IdMessage1.Date:=Date;
    //Sujet du message
    IdMessage1.Subject:=Edit4.Text;
    //Priorité du message
    IdMessage1.Priority:=mpNormal;
    //Corps du message
    IdMessage1.Body.Assign(Memo1.Lines);
     
    // si un fichier attaché est mentionné
    if Edit3.Text<>'') then
       //Attache le fichier
       begin
       tpj:=TIdAttachment.Create(IdMessage1.MessageParts);
       tpj.LoadFromFile(edit3.text);  //----------> ne fonctionne pas  :o(  cela me renvoie une "erreur abstraite"
       end;
     
    //Connexion au serveur smtp
    IdSMTP1.AuthType:=satDefault;
    IdSMTP1.Host:='smtp.**********';
    IdSMTP1.Port:=***;
    IdSMTP1.UserName:='********';
    IdSMTP1.Password:='*********';
    IdSMTP1.Connect;
       try
       IdSMTP1.Send(IdMessage1);
       finally
       IdSMTP1.Disconnect;
       end;
    end;

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Bon je me réponds tout seul car ça peut aider quelqu'un d'autres.
    Quand on pose un composant idmessage sur sur la form, dans la clauses uses, il y a tout un tas de idxxxxx qui s'inscrivent, mais pas idAttachementFile :o(
    En le rajoutant manuellement, j'ai enfin accès à

    TIdAttachmentFile.Create(IdMessage1.MessageParts, edit3.text)

    et non plus à idAttachment.create sans le File !

    ensuite, il suffit de rajouter .filename:=edit3.text et le tout est joué

    Bon, ça marche avec le port 25, mais il va falloir que je m'attaque maintenent au port 587 je crois, et là il faut le idSSL...etc le dernier ferme la porte ....

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Bon, je me réponds encore et c'est tant mieux, ça prouve que je progresse !

    Il m'a suffit de rattacher le composant IdSSLIOHandlerSocketOpenSSL à la propriété IOHandler du composant IdSMTP ... et de trouver les dll (lien indiqué dans le tuto ci-dessus), et où placer ces dll et ça a très bien marché.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    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 455
    Points : 24 867
    Points
    24 867
    Par défaut
    La FAQ Comment envoyer un e-mail ? avec la seconde partie en Indy doit être un peu vieille D7, Indy 9, tu as dedans le piège du TIdAttachment\TIdAttachmentFile
    Pense à gérer tes ContentType du Body et des Attachment
    Ainsi que l'encodage CharSet UTF8 ...

    Pense à déployer avec ton exe Libeay32.dll et ssleay32.dll sinon le IdSSLIOHandlerSocketOpenSSL ne fonctionnera pas
    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
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    La FAQ Comment envoyer un e-mail ? avec la seconde partie en Indy doit être un peu vieille D7, Indy 9, tu as dedans le piège du TIdAttachment\TIdAttachmentFile
    Pense à gérer tes ContentType du Body et des Attachment
    Ainsi que l'encodage UTF8 ...

    Pense à déployer avec ton exe Libeay32.dll et ssleay32.dll sinon le IdSSLIOHandlerSocketOpenSSL ne fonctionnera pas
    En fait non, c'est le tuto de Vasseur https://gilles-vasseur.developpez.co...-robin/#LVII-B. Il est très bien fait mais peut-être pas à jour, mais ça m'a beaucoup aidé quand même.
    Pour les librairies, effectivement il faut y penser, mais j'ai vu dans un autre fil que Paul Toth conseillait son SChannel pour s'affranchir des dll.
    J'arrive à le faire marcher pour du HTTP, mais pour envoyer des mails avec SMTP, lors de la connexion, ça semble bien se passer, mais ça fait une exception lors de l'envoi ... je cherche pourquoi.

    Si Paul passe par là, je suis preneur d'un conseil ;o)

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 341
    Points : 150
    Points
    150
    Par défaut
    Allez, je me réponds encore, il suffisait que je supprime le composant idSSL etc ... avec lequel idSMTP devait encore avoir un lien pour que tout fonctionne.
    Comme ça je m'affranchis des dll !
    Merci Paul pour ces unités !!!

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

Discussions similaires

  1. [Débutant] Envoyer une pièce jointe avec vb.net vers Outlook.
    Par Tempus01 dans le forum VB.NET
    Réponses: 3
    Dernier message: 05/02/2021, 09h38
  2. Envoi de mail avec la fonction PHP mail() avec une pièce jointe pdf
    Par aztec dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 08/08/2017, 11h25
  3. envoyer une pièce jointe avec delphi xe2
    Par momedalhouma dans le forum Langage
    Réponses: 11
    Dernier message: 30/01/2012, 15h42
  4. [Mail] Envoyer une pièce jointe (.doc)
    Par Dendrite dans le forum Langage
    Réponses: 1
    Dernier message: 10/07/2009, 09h29
  5. Envoyer une pièce jointe avec mail
    Par oc_alex86 dans le forum Réseau
    Réponses: 1
    Dernier message: 15/01/2009, 23h21

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