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 :

envoi mail avec image dans le body


Sujet :

Delphi

  1. #1
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut envoi mail avec image dans le body
    bonjour
    je cherche comment envoyer un mail avec image dans le body

    j'ai déjà chercher sur la toil, sans trouver un code qui marche, ou peut être que je sais pas comment le faire;
    http://www.projectindy.org/Sockets/B...8_17_A.EN.aspx
    http://codenewsfast.com/isapi/isapi....rticle=6979409

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Voici un exemple de comment faire

    Exemple du mail
    Les balises doivent être du format :
    <img src="cid:Nom_de_limage.xxx" />

    Code html : 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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Mail test</title>
    <style type="text/css">
    </style></head>
    <body>
    <img src="cid:logoEntete.png" />
    <p>Bonjour,</p></br>
    <p>Ce mail est un mail de test pour montrer l'utilisation des images</p></br>
    <p>Dans un mail de type html et se faire une signature et une entête en image qui n'apparaitra pas</p></br>
    <p>dans les pièces jointes du mail </p>
    <img src="cid:logoSignature.png" />
    </body>
    </html>

    Dans les uses : IdSMTP, IdMessage, IdAttachmentFile, IdText

    Voici le code à implémenter dans delphi pour avoir un joli mail avec des images

    Code Delphi : 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
     
    begin
            Try
              With TIdSMTP.Create(nil) do
              try
                IdMess := TIdMessage.Create(nil);
     
                UserName := 'VotreUserName';
                Password := 'VotrePassword';
                Host     := 'LeHostQuiVaBien';
                Port     := 25;
     
                Connect;
                IdMess.Subject := 'Mail de test';
                tIdText(IdMess.MessageParts).ContentType := 'multipart/mixed';
     
    // Ici il faut charger le fichier html contenant le corps du mail de l'exemple ci dessus
                IdMess.Body.LoadFromFile('Mail.html');
     
                With  TIdText.Create(IdMess.MessageParts) do
                begin
                  ContentType := 'text/html';
                  Body.Text := IdMess.Body.Text;
                end;
    // charger l'image de l'entete
                With TIdAttachmentFile.Create(IdMess.MessageParts, 'logoEntete.png') do
                begin
                  ContentType := 'image/png';
                  FileIsTempFile := false;
                  ContentDisposition := 'inline';
                  ExtraHeaders.Values['content-id'] := 'logoEntete.png';
                  DisplayName := 'logoEntete.png';
                end;
    // ici charger le logo de signature
                With TIdAttachmentFile.Create(IdMess.MessageParts, 'logoSignature.png') do
                begin
                  ContentType := 'image/png';
                  FileIsTempFile := false;
                  ContentDisposition := 'inline';
                  ExtraHeaders.Values['content-id'] := 'logoSignature.png';
                  DisplayName := 'logoSignature.png';
                end;
     
                IdMess.From.Text := 'Mail de l''expéditeur';
                IdMess.Recipients.EMailAddresses := 'Mail du destinataire';
                Send(IdMess);
     
              finally
                Free;
                IdMess.Free;
              end;
    end;

  3. #3
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    merci Rayek
    le problème c'est dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ContentType := 'image/png';
    j'avais mis
    ContentType := 'image/jpeg';

    autre chose, pour ajouter un fichier css??

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Tu ne peux pas utiliser le CSS avec un fichier il faut le mettre directement dans le mail

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/TR/html5/">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <style type="text/css">
     // Les styles
    </style>
    <title></title>
    </head>
    <body>
    </body>
    </html>

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    ok, merci,

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut
    @ Rayek, bonjour, c'est quelle version de Indy ? et avec D6 c'est possible car j'ai une exception sur "TIdAttachmentFile" et "Tidtext", je ne les ai pas dans la palette.

    @+,

    Cincap

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    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 560
    Points : 25 156
    Points
    25 156
    Par défaut
    Tout n'est pas dans la palette ! Pitié ! Delphi n'est pas qu'un vulgaire clicodrome !
    Citation Envoyé par Rayek Voir le message
    Dans les uses : IdSMTP, IdMessage, IdAttachmentFile, IdText
    Il faut mettre les uses soit même !

    TIdAttachmentFile de Indy10 doit être TIdAttachment en Indy9 dans le fichier IdAttachment.pas
    TIdText dans IdText.pas !

    exploiter la réciproque de indy 9 vers indy 10.1.6

  8. #8
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut
    Bonsoir à toutes et à tous,

    Ma version d'Indy 9 pour D6 ne contient pas les composants "TIdAttachment" et "TIdText".

    Si quelqu'un avait un lien pour la version complète cela m'arrangerait.

    @+,

    Cincap

  10. #10
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 871
    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 871
    Points : 11 362
    Points
    11 362
    Billets dans le blog
    6
    Par défaut
    Ce ne sont pas des composants, mais des objets utilisés par TIdMessage. Ils ne figurent donc pas dans la palette.

    Selon les versions d'Indy, on les trouve dans telle ou telle unité : regarde la précédente réponse de ShaïLeTroll.

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut
    Bonsoir à toutes et à tous,

    @ tourlourou, en effet, j'ai remplacé "TIdAttachmentFile" par "TIdAttachment" et la seule erreur que je trouve en compilant c'est au niveau du "end" à la fin mais je ne vois pas ou.

    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
     
    Try
              With TIdSMTP.Create(nil) do
              try
                IdMess := TIdMessage.Create(nil);
     
                UserName := 'VotreUserName';
                Password := 'VotrePassword';
                Host     := 'LeHostQuiVaBien';
                Port     := 25;
     
                Connect;
                IdMess.Subject := 'Mail de test';
                tIdText(IdMess.MessageParts).ContentType := 'multipart/mixed';
     
    // Ici il faut charger le fichier html contenant le corps du mail de l'exemple ci dessus
                IdMess.Body.LoadFromFile('Mail.html');
     
                With  TIdText.Create(IdMess.MessageParts) do
                begin
                  ContentType := 'text/html';
                  Body.Text := IdMess.Body.Text;
                end;
    // charger l'image de l'entete
                With TIdAttachment.Create(IdMess.MessageParts, 'logoEntete.png') do
                begin
                  ContentType := 'image/png';
                  FileIsTempFile := false;
                  ContentDisposition := 'inline';
                  ExtraHeaders.Values['content-id'] := 'logoEntete.png';
                  DisplayName := 'logoEntete.png';
                end;
    // ici charger le logo de signature
                With TIdAttachment.Create(IdMess.MessageParts, 'logoSignature.png') do
                begin
                  ContentType := 'image/png';
                  FileIsTempFile := false;
                  ContentDisposition := 'inline';
                  ExtraHeaders.Values['content-id'] := 'logoSignature.png';
                  DisplayName := 'logoSignature.png';
                end;
     
                IdMess.From.Text := 'Mail de l''expéditeur';
                IdMess.Recipients.EMailAddresses := 'Mail du destinataire';
                Send(IdMess);
     
              finally
                Free;
                IdMess.Free ;
                end;
     
     end;
    end.
    Voila voilou,

    @+,

    Cincap

  12. #12
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Le try du début n'a pas de finally ou d'Except

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut
    Bonjour à toutes et à tous,

    @ Rayek, merci pour l'info mais comme c'était l'intégralité de ton code proposé le 30/04/2013, en te connaissant je ne l'ai pas contrôlé.

    Ceci étant dit, j'ai quand même une exception lors de la compilation genre :

    Dans l'unité "IdHeaderList.pas" qui s'ouvre automatiquement lors de la compilation !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function TIdHeaderList.IndexOfName(const AName: string): Integer;
    var
      i: Integer;
    begin
      Result := -1;
      for i := 0 to Count - 1 do begin //ICI
        if AnsiSameText(GetNameFromLine(i), AName) then begin
          Result := i;
          Break;
        end;
      end;
    end;
    @+,

    Cincap

  14. #14
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par cincap Voir le message
    Bonjour à toutes et à tous,

    @ Rayek, merci pour l'info mais comme c'était l'intégralité de ton code proposé le 30/04/2013, en te connaissant je ne l'ai pas contrôlé.
    C'était un bout de code dans notre section FAQ que je devais finir (pour en faire une FAQ) mais le manque de temps ne me permet pas de totalement la finir.

    Citation Envoyé par cincap Voir le message
    Ceci étant dit, j'ai quand même une exception lors de la compilation genre :

    Dans l'unité "IdHeaderList.pas" qui s'ouvre automatiquement lors de la compilation !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function TIdHeaderList.IndexOfName(const AName: string): Integer;
    var
      i: Integer;
    begin
      Result := -1;
      for i := 0 to Count - 1 do begin //ICI
        if AnsiSameText(GetNameFromLine(i), AName) then begin
          Result := i;
          Break;
        end;
      end;
    end;
    @+,

    Cincap
    N'utilisant pas Indy9 (je met à jour indy en général à la dernière version) je ne pourrais pas trop t'aider.

    Mais vu où il y a l'erreur, je pense que le problème vient du count (le i étant définit en variable locale à la procédure).

    Quel est le message d'erreur de compilation ?

  15. #15
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 446
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 446
    Points : 1 333
    Points
    1 333
    Par défaut
    @ Rayek,

    C'était un bout de code dans notre section FAQ que je devais finir (pour en faire une FAQ) mais le manque de temps ne me permet pas de totalement la finir.
    Loin de la d'être un reproche

    L'erreur que j'obtiens voir fichier JPG en attache.

    Je ne vais pas insister !

    @+,

    Cincap
    Images attachées Images attachées  

  16. #16
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tIdText(IdMess.MessageParts).ContentType := 'multipart/mixed';
    ?????

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

Discussions similaires

  1. envoi un mail avec image
    Par hadjiphp dans le forum Langage
    Réponses: 3
    Dernier message: 07/10/2009, 15h59
  2. [Mail] Envoi email avec image
    Par feldene dans le forum Langage
    Réponses: 1
    Dernier message: 15/07/2009, 09h15
  3. [AC-2003] [Lotus] Envoi de mail avec images
    Par Kloun dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/06/2009, 07h36
  4. envoi mail avec une image sur PERL
    Par panganino dans le forum Modules
    Réponses: 2
    Dernier message: 27/02/2009, 13h44
  5. [Mail] Envoi d'e-mail avec image de fond
    Par mimagyc dans le forum Langage
    Réponses: 4
    Dernier message: 19/12/2007, 20h58

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