Envoi d'un mail en HTML avec images

Envoi d'un mail en HTML avec images - PHP - Programmation

Marsh Posté le 09-09-2007 à 16:50:41    

Bonjour,
 
Je mets en place actuellement une newsletter en HTML.
Je voudrais lui affecter des styles. A priori pas de problème sauf que je veux affecter une image de fond à un de mes styles. Or si je mets l'image directement dans le style, ça ne marche pas.
 
Voici un extrait de mon code qui ne marche pas :

Citation :


$msg = '<html>';
$msg .= '<head>';
$msg .= '<style type="text/css">';
 
$msg .= '.sousTitre {
font-family: "Trebuchet MS";
font-size: 12px;
font-weight: bold;
font-style: italic;
background: magenta url("cid:FondSousTitreMagentaBlanc" ) no-repeat scroll left top;
text-align: center;
color: black;}';

 
$msg .= '</style>';
$msg .= '</head>';
 
$msg .= '<body>';
$msg .= '<table>';
    $msg .= '<tr>';
        $msg .= '<td class="sousTitre">';
            $msg .= 'Mon sous titre';
        $msg .= '</td>';
    $msg .= '</tr>';
$msg .= '</table>';
$msg .= '</body>';
$msg .= '</html>';
 
 
//Images attachées : Fond Sous Titre
$fichier = "../../Images/FondSousTitreMagentaBlanc.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: <FondSousTitreMagentaBlanc>\r\n";
$msg .= "\r\n";
$msg .= $fichierattache . "\r\n";
$msg .= "\r\n\r\n";


Ce qui est étrange, c'est que ça marche si je remplace :

Citation :

$msg .= '<td class="sousTitre">';


par

Citation :

$msg .= '<td class="sousTitre" background="cid:FondSousTitreMagentaBlanc">';


Ma question : Est-on obliger de mettre la référence à l'image liée directement dans la propriété "background" de la balise "<td>", ou est-ce que c'est possible de la mettre dans le style défini ? Dans ce 2ème cas, où est mon erreur ?
 
Merci pour votre aide :jap:  

Reply

Marsh Posté le 09-09-2007 à 16:50:41   

Reply

Marsh Posté le 09-09-2007 à 18:39:32    

Tu balancerais les images encodées dans le texte. Parce que pour les mails c'est une vraie galère à avoir un truc qui marche partout. Je suis même pas sur que tu puisses envoyer ça comme ça, c'est pas un client web ;)

Reply

Marsh Posté le 09-09-2007 à 19:28:20    

L'image est définie comme étant un fichier joint (Tous les didacticiels que j'ai trouvés gèrent les images comme ça).
Ensuite, j'y fait référence en faisant par exemple :
<img src="cid:FondSousTitreMagentaBlanc"/> ou <td background="cid:FondSousTitreMagentaBlanc">
Il n'y a que la référence depuis un style prédéfini qui ne marche apparament pas. Par exemple :
.sousTitre {background-image: url("cid:FondSousTitreMagentaBlanc" )};
 
J'ai aussi essayer de ne pas mettre url() et aussi d'enlever les guillemets. J'aimerais savoir si quelqu'un sait si c'est possible d'affecter l'image de fond dans un style au lieu de la mettre directement dans la propriété background de <td>.
 
Merci pour vos réponses.

Reply

Marsh Posté le 09-09-2007 à 19:54:43    

déjà on ne fait pas de CSS dans les emailing, ca ne passe quasiment nulle part, au mieux tu fous des styles en dure : style="", mais pas de classes.

Reply

Marsh Posté le 10-09-2007 à 08:59:49    

Bonjour,
 
je souhaite également envoyer des mail avec images: J'ai donc suivi le tutoriel suivant :
http://www.toutestfacile.com/php/cours/mail_4.php5
 
Cependant, il y a un problème que je n'arrive pas à résoudre :
 
sur Gmail, les images ne s'affichent pas par défaut.  
Alors que si j'envoie un e-mail HTMl avec Outlook Express, les images s'affichent directement sans devoir faire de manipulations supplémentaires.
 
Comment fait ce programme ? j'ai essayé de copier/coller le code HTML généré mais cela ne fonctionne pas, il doit y avoir une astuce supplémentaire mais laquelle ??

Reply

Marsh Posté le 11-09-2007 à 09:57:31    

Mets tes images sur ton site web, et en URL absolues dans le mail (url(http://...image.extension)) ça allégera d'autant +1/3 le mail.

Reply

Marsh Posté le 11-09-2007 à 10:00:10    

malheureusement avec cette méthode les images sont bloquées chez bon nombre de client mail :(

Reply

Marsh Posté le 11-09-2007 à 10:21:56    

il faut que les images soient stockées sur un serveur web et que l'emailing fasse appels à ces images <img src="http://www.monserveurweb/emailing/image1.jpg" />

Reply

Marsh Posté le 01-10-2007 à 19:38:25    

gatsu35 a écrit :

il faut que les images soient stockées sur un serveur web et que l'emailing fasse appels à ces images <img src="http://www.monserveurweb/emailing/image1.jpg" />


Ce principe ne tient pas compte du cas où notre destinataire récupère les mails avec Outlook ou autre logiciel qui permet de consulter les mails en n'étant pas connecté à Internet.
C'est pour ça que je préfère envoyer les images en fichier joint, même si ça alourdit le mail. :/

Reply

Marsh Posté le 01-10-2007 à 21:52:07    

Perso je me sers de http://pear.php.net/package/Mail ça fonctionne chez moi, en tout cas avec une image affiché classiquement.
Maintenant pour ton pblm ... à quoi sert le "cid:" ? Perso je crois pas que j'utilise ça.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 01-10-2007 à 21:52:07   

Reply

Marsh Posté le 02-10-2007 à 11:26:25    

Red Viper > Et comme ton mail contient des images, t'augmente le risque de le voir arriver dans le dossier des "courriers indésirables" voire directement à la poubelle. En plus de ça, c'est bien gentil le coup du "même si ça alourdis le mail" mais même avec une connexion haut débit, quand t'as une dizaine de gros mails sur hotmail, ça met une plombe pour les ouvrir avec outlook.
En fait, le mieux, c'est de laisser l'utilisateur choisir entre avoir les images dans le mail ou à l'extérieur même si personne ne laisse le choix en pratique :( (d'un autre côté, au vu des mails que je reçoit, à part les spams et la famille, quasiment personne ne mets les images dans le mail mais beaucoup rajoutent un "si ça s'affiche mal, cliquer ici" )

Reply

Marsh Posté le 06-10-2007 à 17:21:45    

Ricco a écrit :

Perso je me sers de http://pear.php.net/package/Mail ça fonctionne chez moi, en tout cas avec une image affiché classiquement.
Maintenant pour ton pblm ... à quoi sert le "cid:" ? Perso je crois pas que j'utilise ça.


 
le "cid :" est justement ce qui permet de définir quelle image en pièce jointe est utilisée.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed