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

API, COM et SDKs Delphi Discussion :

Indy fichier en attachment


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 476
    Par défaut Indy fichier en attachment
    Bonjour,
    Est-ce que la grammaire de cette ligne de code est correcte (joindre un fichier pdf dont le chemin et le nom sont précisés?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MailMessage  := TIdMessage.Create(nil);
    ...
    MailMessage.MessageParts.Add.FileName:=chemin+nom du fichietr+'.pdf';
    Metrci d'avance,
    PhilLu

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 982
    Par défaut
    Comme dans la FAQ Comment envoyer un e-mail ?

    Pour Indy 9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        LFilePart := TIdAttachment.Create(IdMessage.MessageParts, chemin+nom_du_fichietr+'.pdf');
    Pour Indy 10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LFilePart := TIdAttachmentFile.Create(MailMessage.MessageParts, chemin+nom_du_fichietr+'.pdf');
    LFilePart.FileName := nom_du_fichietr+'.pdf';
    En supposant que
    chemin soit une variable contenant par exemple 'C:\Dossier\SousDossier\' avec \ terminal
    nom_du_fichietr soit une variable contenant par exemple 'MaFacture'
    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
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 982
    Par défaut
    Si tu veux, tu peux t'inspirer de mon wrapper : TSLTSMTP.SendTextStream

    Je l'ai surtout utilisé pour envoyer des mails texte, genre des batch nocturnes envoyant un mail de log + fichier de monitoring, en réseau local
    Il faudra gérer le SSL avec IdSSLIOHandlerSocketOpenSSL (inclus dans Delphi + Libeay32.dll et ssleay32.dll) ou Execute.IdSSLSChannel (à récupérer sur git mais sans DLL)

    Pour un mail utilisateur, j'ai d'autres fonctions orienté HTML mais ça c'est pas OpenSource (c'est la même unité mais évolué pour mon employeur), on y voit d'ailleurs une bribre avec ctTextHTML.
    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

  4. #4
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 476
    Par défaut
    Merci ShaiLeTroll,

    J'ai bien Indy 10 sur delphi XE2.

    Quelle est le type de LFilePart?

    Merci d'avance,
    PhilLu

  5. #5
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 476
    Par défaut
    ... J'ai bien ajouter IdattachmentFile dans uses.
    ... et ajouté dans var: LFilePart: TIdattachmentFile;

    mais je reçois une erreur au run à la première ligne de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     LFilePart := TIdAttachmentFile.Create(MailMessage.MessageParts, chemin+nom du fichietr+'.pdf';);
    LFilePart.FileName := chemin+nom du fichietr+'.pdf';
    Sans ces deux lignes mon email est correctement envoyé?!?

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 982
    Par défaut
    Sans l'erreur, difficile de répondre
    Sans le contenu des variables et vérifier que le fichier existe, va savoir

    As-tu étudié TSLTSMTP.SendTextStream ?
    Cela montre que le body doit être dans un TIdText pour créer un mail multipart


    Autre point, ne pas le chemin complet dans FileName (seconde ligne), c'est le nom du fichier affiché dans le mail
    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

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 477
    Par défaut
    Salut

    Un code de ce genre la fonctionne parfaitement
    le ssl est geré par l'objet IdSMTP
    J'ai minimisé au maximun le code util afin que tu comprenne le deroulement de la creation d'un courriel
    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
     
        with Idmessage1 do
        begin
          From.Address := 'monAdresse@MonDomaine.fr';
          From.Name := 'Mon nom';
          Recipients.EMailAddresses := StrDestinataire;
          if  trim(StrCCopy) <> '' Then
           if BoolDestuniquement Then
             Recipients.EMailAddresses := StrMyDestinataire+','+StrCCopy
           else
             CCList.EMailAddresses := StrCCopy
        end
     
        if BoolHightPriority Then
          Idmessage1.Priority := mpHighest
        else
          Idmessage1.Priority := mpNormal;
     
        Idmessage1.Subject := 'Mon Suject';
     
        corps := TStringList.Create;
     
        corps.Add(#13+#10+'  ');
        corps.Add('Veuillez trouver ci-joint ');
        corps.Add('les documents journaliers vous concernant.');
        IdMessage1.Body.Text := corps.Text;
        corps.free;
     
       TIdAttachmentFile.Create(IdMessage1.MessageParts,Nomfichier);
       IdSMTP1.Connect;                    // Connexion
        try
        if (IdSMTP1.connected) then
        begin
          Try
            IdSMTP1.Send(IdMessage1);         // Envoi du message
            IdSMTP1.Disconnect;               // Déconnexion
            DelayMs(5000);
          except
            onMessage(Format('Erreur envois : %s ',[StrMonMessage]));
          end;
        end;
      except
      end;
      IdMessage1.Clear;

Discussions similaires

  1. [DokuWiki] Taille des fichiers à attacher
    Par Medmidou dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 10/12/2009, 11h42
  2. [Indy 10] Récupérer un fichier en attachement d'une requête HTTP
    Par davidkungfu dans le forum Web & réseau
    Réponses: 0
    Dernier message: 10/04/2008, 22h19
  3. mail en fichier BINAIRE attaché
    Par Sciensou dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 07/06/2007, 10h25
  4. Envoi de fichier en attachement via la commande mail
    Par insupien dans le forum Linux
    Réponses: 3
    Dernier message: 21/08/2006, 20h36
  5. Réponses: 4
    Dernier message: 04/08/2006, 12h35

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