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 :

Bannière dans mail PHP


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut Bannière dans mail PHP
    Bonjour

    J'ai trouvé, par votre intermédiaire, et juste un petit peu adapté un script me permettant d'envoyer des pièces jointes dans un mail . Cela fonctionne très bien, sauf quelques petits détails de mise en page encore à parfaire, mais ... j'aurais souhaité ajouter , en tête de mail, une bannière (logo) ma_bannière.jpg et là, je ne sais pas du tout comment procéder ..

    Mon niveau de développeur est proche du premier barreau de l'échelle s'il en est une ..!

    merci pour vos conseils bien intentionnés

    mon code actuel
    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
    <?php 
    // liste d'images à envoyer
    $files = array("a-bicyclette-image1mi.jpg","a-bicyclette-image2mi.jpg");
     
    //éléments de l'email : to, from, subject, header
    $to = "dest@hotmail.fr";
    $from = "mau@hotmail.fr";
    $subject ="pieces jointes";
    $message = "essai d'envoi de newsletter avec pièces jointes";
    $headers = "From: $from";
     
    // boundary
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
     
    // infos pour les pièces jointes
    $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
     
    // multipart boundary
    $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
    $message .= "--{$mime_boundary}\n";
     
    // préparation des pièces jointes
     
    for($x=0;$x<count($files);$x++){
        $file = fopen($files[$x],"rb");
        $data = fread($file,filesize($files[$x]));
        fclose($file);
        $data = chunk_split(base64_encode($data));
        $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$files[$x]\"\n" .
        "Content-Disposition: attachment;\n" . " filename=\"$files[$x]\"\n" .
        "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
        $message .= "--{$mime_boundary}\n";
    }
     
    // send
     
    $ok = @mail($to, $subject, $message, $headers);
    if ($ok) {
        echo "<p>mail sent to $to!</p>";
    } else {
        echo "<p>mail could not be sent!</p>";
    }
     
    ?>

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Le plus simple est d'héberger l'image quelque part de renseigner l'URL comme pour n'importe quelle balise img :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://domain.tld/liens/vers/image.ext" alt="Mettez peut-être quelque chose ici" />

    Pensez peut-être à utiliser l'attribut ALT pour afficher un texte par défaut.
    En effet, les clients email (Gmail, Outlook, etc) ne chargent pas les images par défaut, il peut donc parfois être bon d'ajouter l'attribut ALT afin que le texte (ou une partie) contenu dans l'image apparaisse directement.

  3. #3
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut oui .. mais
    mais où placer cette balise
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://baeb.fr/image.jpg" alt="image baeb" />
    dans mon script ?
    lorsque je la mets dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = "<img src="http://baeb.fr/image.jpg" alt="image baeb" />essai d'envoi de newsletter avec pièces jointes";
    , je reçois l'adresse sur le mail mais pas l'image..

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Il s'agit simplement d'HTML.... Vous devez placer la balise <img /> là où vous souhaitez que l'image apparaisse.

    Comme je l'ai dit, par défaut, vous ne devriez pas voir l'image mais une option (en haut habituellement) qui demande si vous souhaitez afficher les images.

    De plus, le lien que vous renseignez n'est pas correct, si on le suit, il y a une redirection qui s'effectue et on retourne à la homepage => http://baeb.fr/image.jpg

  5. #5
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut script en php
    je ne sais pas , dans mon script , à quel endroit inserer la balise image
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://baeb.fr/image.jpg" alt="image baeb"/>
    (qui ne vous était pas visible car en local pour mes essais) pour qu'elle apparaisse en début de mail .. ou qu'elle apparaisse, tout simplement ...

    en la mettant au début de $message elle apparait en adresse texte et ne laisse aucune option pour la charger
    les autres images venant de l'array $files apparaissent parfaitement et directement dans le mail reçu

    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
    <?php 
    // liste d'images à envoyer
    $files = array("a-bicyclette-image1mi.jpg","a-bicyclette-image2mi.jpg");
     
    //éléments de l'email : to, from, subject, header
    $to = "dest@hotmail.fr";
    $from = "mau@hotmail.fr";
    $subject ="pieces jointes";
    $message = "essai d'envoi de newsletter avec pièces jointes";
    $headers = "From: $from";
     
    // boundary
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
     
    // infos pour les pièces jointes
    $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
     
    // multipart boundary
    $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
    $message .= "--{$mime_boundary}\n";
     
    // préparation des pièces jointes
     
    for($x=0;$x<count($files);$x++){
        $file = fopen($files[$x],"rb");
        $data = fread($file,filesize($files[$x]));
        fclose($file);
        $data = chunk_split(base64_encode($data));
        $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$files[$x]\"\n" .
        "Content-Disposition: attachment;\n" . " filename=\"$files[$x]\"\n" .
        "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
        $message .= "--{$mime_boundary}\n";
    }
     
    // send
     
    $ok = @mail($to, $subject, $message, $headers);
    if ($ok) {
        echo "<p>mail sent to $to!</p>";
    } else {
        echo "<p>mail could not be sent!</p>";
    }?>

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    je ne sais pas , dans mon script , à quel endroit inserer la balise image
    Comme je l'ai dit, il s'agit simplement d'HTML. Si vous souhaitez que votre image apparaisse en haut, vous la placez en haut dans le code, si vous la voulez en bas, vous la placez en bas dans le code.
    Après, il faut différencier le placement d'une image dans un mail et une pièce jointe. La méthode que je vous donne ici est la plus simple à mettre en place, mais il faut évidemment que vous donniez des chemins corrects aux images.

    Vous avez réalisé un seul test, et sans que l'image n'existe en ligne. Réessayez avec le bout de code que vous avez montré tout à l'heure, et ça devrait fonctionner cette fois.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = "<img src="http://baeb.fr/image.jpg" alt="image baeb" />essai d'envoi de newsletter avec pièces jointes";

  7. #7
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut ça ne fonctionne pas !!
    à aucun endroit , dans mon script qui fonctionne avec le texte de $message et les images de $file , je ne parviens à visualiser cette image ..

    dans ma fonction mail en php il y a les variables $message, $headers, $data, $file ... et quel que soit l'endroit (totalement aléatoire dans mon cas vu mon niveau de compétences en la matière .. j'ai presque tout essayé) l'image n'apparait pas .
    si vous savez , sur mon script , là où je dois placer cette balise ..... mais peut être il y a t-il un problème de syntaxe dans cette balise !!

  8. #8
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    De fait, je n'avais pas fait attention pensant que votre code était correct mais ce n'est pas le cas. Il y a une erreur de syntaxe....
    D'ailleurs, le même n'a pas pu s'envoyer... vous auriez du le remarquer :s

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // Votre code incorrect :
    $message = "<img src="http://baeb.fr/image.jpg" alt="image baeb" />essai d'envoi de newsletter avec pièces jointes";
    // Le code correct :
    $message = '<img src="http://baeb.fr/image.jpg" alt="image baeb" />essai d\'envoi de newsletter avec pièces jointes';
    // Autre possibilité :
    $message = "<img src=\"http://baeb.fr/image.jpg\" alt=\"image baeb\" />essai d'envoi de newsletter avec pièces jointes";

    Attention aux quotes et double-quotes !!

  9. #9
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut désolé , .. toujours pas
    j'ai essayé les différentes combinaisons en prenant garde aux quotes
    dans l'une des combinaisons je reçois en texte

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://baeb.fr/image.jpg" alt="image baeb" />
    essai d'envoi de newsletter avec pieces jointes

    avec l'adresse en lien qui, si je clique, m'affiche l'image ... à la place du mail !!
    dans l'autre combinaison, la même chose mais sans le lien actif

  10. #10
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Vous n'utilisez pas le bon Content-type, il faut préciser que c'est de l'HTML

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Changez ceci :
    $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
    // Par le bon Content-Type :
    $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";

  11. #11
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut ok merci
    cela fonctionne avec les deux syntaxes que vous m'avez envoyé concernant les quotes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = "<img src=\"http://baeb.fr/image.jpg\" alt=\"image baeb\" /><br />
    essai d envoi de newsletter avec pieces jointes";

    et avec le bon Content-Type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
    merci bien et bonne soirée

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

Discussions similaires

  1. lien href dans mail php tronqué
    Par serna dans le forum Langage
    Réponses: 3
    Dernier message: 29/06/2013, 08h46
  2. Problème d'affichage d' id mysql dans mail php
    Par ghislaingaudin dans le forum Langage
    Réponses: 8
    Dernier message: 20/05/2012, 16h43
  3. Problème de syntaxe javascript dans mail PHP
    Par kck61 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/11/2011, 11h44
  4. Problème de pièce jointe pdf dans mail php
    Par pcleder dans le forum Langage
    Réponses: 0
    Dernier message: 16/04/2010, 15h32
  5. Problème de pièce jointe pdf dans mail php
    Par pcleder dans le forum Langage
    Réponses: 0
    Dernier message: 16/04/2010, 15h13

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