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 PHP Discussion :

Iinsertion d'image dans un mail [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 092
    Points : 1 527
    Points
    1 527
    Billets dans le blog
    5
    Par défaut Iinsertion d'image dans un mail
    Bonjour à tous

    Voilà j'ai un script PHP qui envoie un mail dont le contenu est au format HTML et j'aurais voulu mettre une image dans mon contenu HTML
    Après une petite recherche sur le web j'ai trouvé ce code

    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
     
    <?php
    //----------------------------------
    // Construction de l'entête
    //----------------------------------
    $delimiteur = "-----=".md5(uniqid(rand()));
     
    $entete = "MIME-Version: 1.0\r\n";
    $entete .= "Content-Type: multipart/related; boundary=\"$delimiteur\"\r\n";
    $entete .= "\r\n";
     
    //--------------------------------------------------
    // Construction du message proprement dit
    //--------------------------------------------------
     
    $msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";
     
    //---------------------------------
    // 1ère partie du message
    // Le code HTML
    //---------------------------------
    $msg .= "--$delimiteur\r\n";
    $msg .= "Content-Type: text/html; charset=\"utf-8\"\r\n";
    $msg .= "Content-Transfer-Encoding:8bit\r\n";
    $msg .= "\r\n";
    $msg .= "<html><body><h1>Email HTML avec 2 images</h1>";
    $msg .= "Image 1:<img src=\"cid:image1\"><br />";
    $msg .= "Image 2:<img src=\"cid:image2\"><br /></body></html>\r\n";
    $msg .= "\r\n";
     
    //---------------------------------
    // 2nde partie du message
    // Le 1er fichier (inline)
    //---------------------------------
    $fichier = 'monfichier.jpg';
    $fp      = fopen($fichier, "rb");
    $fichierattache = fread($fp, filesize($fichier));
    fclose($fp);
    $fichierattache = chunk_split(base64_encode($fichierattache));
     
    $msg .= "--$delimiteur\r\n";
    $msg .= "Content-Type: application/octet-stream; name=\"$fichier\"\r\n";
    $msg .= "Content-Transfer-Encoding: base64\r\n";
    $msg .= "Content-ID: <image1>\r\n";
    $msg .= "\r\n";
    $msg .= $fichierattache . "\r\n";
    $msg .= "\r\n\r\n";
     
    //---------------------------------
    // 3ème partie du message
    // Le 2ème fichier (attachment)
    //---------------------------------
    $fichier = 'monfichier2.jpg';
    $fp      = fopen($fichier, "rb");
    $fichierattache = fread($fp, filesize($fichier));
    fclose($fp);
    $fichierattache = chunk_split(base64_encode($fichierattache));
     
    $msg .= "--$delimiteur\r\n";
    $msg .= "Content-Type: application/octet-stream; name=\"$fichier\"\r\n";
    $msg .= "Content-Transfer-Encoding: base64\r\n";
    $msg .= "Content-ID: <image2>\r\n";
    $msg .= "\r\n";
    $msg .= $fichierattache . "\r\n";
    $msg .= "\r\n\r\n";
     
    $msg .= "--$delimiteur\r\n";
     
    $destinataire = 'testemail@tout estfacile.com';
    $expediteur   = 'moi@monsite.com';
    $reponse      = $expediteur;
    echo "Ce script envoie un mail au format HTML avec 2 images à $destinataire";
    mail($destinataire,
         'Email HTML avec 2 images',
         $msg,
         "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$entete);
    ?>
    Je l'ai testé et malheureusement il ne fonctionne pas. C'est à dire que je reçois bien le mail mais les images ne sont pas présentes
    Si je regarde le source du mail voilà ce que j'obtiens

    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
     
    Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.
    -------=3289aa05e675cb09e3266ec20e2808cd
    Content-Type: text/html; charset="utf-8"
    Content-Transfer-Encoding:8bit
     
    <html><body><h1>Email HTML avec 2 images</h1>Image 1:<img src="cid:image1"><br><br>Image 2:<img src="cid:image2"><br><br></body></html>
     
    -------=3289aa05e675cb09e3266ec20e2808cd
    Content-Type: application/octet-stream; name="logo.png"
    Content-Transfer-Encoding: base64
    Content-ID: <image1>
     
     
     
     
     
    -------=3289aa05e675cb09e3266ec20e2808cd
    Content-Type: application/octet-stream; name="logo.png"
    Content-Transfer-Encoding: base64
    Content-ID: <image2>
     
     
     
     
     
    -------=3289aa05e675cb09e3266ec20e2808cd
    J'ai comme l'impression que l’encodage n'a pas été réalisé car d'après le code après les lignes Content-ID: je devrait avoir quelque chose. Mais n'étant pas spécialiste du domaine je me trompe peut être

    Si quelqu'un a une idée je suis preneur

  2. #2
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 092
    Points : 1 527
    Points
    1 527
    Billets dans le blog
    5
    Par défaut
    Honte à moi car je viens de m’apercevoir que je lisais 0 octets de la longueur de mon fichier.
    Donc ce code fonctionne très bien

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

Discussions similaires

  1. afficher des images dans un mail
    Par boss_gama dans le forum ASP
    Réponses: 9
    Dernier message: 12/09/2006, 17h56
  2. Integrer une image dans un mail
    Par Immobilis dans le forum ASP
    Réponses: 2
    Dernier message: 19/04/2006, 17h14
  3. Image dans un mail
    Par krfa1 dans le forum ASP
    Réponses: 2
    Dernier message: 05/12/2005, 09h38
  4. [Mail] Faire figurer des images dans un mail
    Par JeanMi66 dans le forum Langage
    Réponses: 4
    Dernier message: 04/12/2005, 22h49
  5. [Librairies] Inclusion d'images dans un mail
    Par peck dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/11/2005, 09h46

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