Inserer une image avec la fonction mail()

Le
Neptune
Bonjour,
Avec la fonction mail(), j'envoie sans aucun problème des messages au format
HTML.
Je souhaiterais insérer dans mon mail des images.
Je ne sais comment faire. Quelqu'un a-t-il une idée ?
D'avance merci.

Cordialement.
Michel FOUILLADE
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
D
Le #570201
"Neptune" news:c4mla7$asc$
Bonjour,
Avec la fonction mail(), j'envoie sans aucun problème des messages au format
HTML.
Je souhaiterais insérer dans mon mail des images.
Je ne sais comment faire. Quelqu'un a-t-il une idée ?
D'avance merci.

Cordialement.
Michel FOUILLADE


Vas voir sur ce site.
http://www.asp-php.net/scripts/asp-php/mail_html.php
C'est le seul script qui fonctionnait correctement et sans presque aucun
paramétrage parmis la dizaine de scripts essayés.
Il n'y avait qu'une seule petite modif à apporter
il suffit d'enlever le "images/" du filesize("images/".$fond) pour le fond et
la pièce jointe.

Dominique
http://www.bike-in-ventoux.fr.vu/ les photos de 1000 km en vélo autour du Mont
Ventoux

Neptune
Le #570199
Bonjour,

J'ai essayé mime_mail.class.php,
http://www.asp-php.net/scripts/asp-php/mail_html.php et bien d'autres sites
et forums, je n'ai pas trouvé d'exemple de script qui marche immédiatement.
Après moult recherches j'ai réussi à construire un email facile à analyser.

Par contre, j'ai un problème :
- Outlook indique que mon message contient une pièce jointe, ce qui fait
que certains destinataires refuseront le message (Compte tenu des virus, je
les comprendrai).
- Or il ne s'agit pas réellement d'une pièce jointe, mais d'une image qui
est affichée dans le message.
- D'ailleurs quand je transfère le mail reçu, la notion de pièce jointe
disparait.

Comment faut-il faire pour que Outlook n'indique plus de pièce jointe ?

D'avance merci.
Michel FOUILLADE

Voici mon code :

[code]

// Adapter à votre contexte
$Page = "ad_mail_avec_image.php";
$from_email = "";
$to_email = "";
$path = "images/image.png";
$fichier = basename($path);

$subject_date = date("Y-m-d H:i:s");
$subject = "ad_mail_image3d.php - " . $subject_date;


// on génère une frontière
$boundary = "-----=" . md5( uniqid ( rand() ) );

$headers = "From: $from_emailn";
$headers .= "MIME-Version: 1.0n";
$headers .= "Content-Type: multipart/mixed; boundary="$boundary"";

$message = "Ceci est un message au format MIME 1.0 multipart/mixed.nn";
$message .= "--" . $boundary . "n";

// Début section html
$message .= "Content-Type: text/html;n charset="iso-8859-1"n";
$message .= "Content-Transfer-Encoding: quoted-printablen";
$message .= "n";
$message .= "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">n";
$message .= "<HTML><BODY>n";

// Contenu du message
$message .= "blah blah -- <b> $subject_date </b> <br> n";
$message .= "Test d'image transmise dans un email <br> n";
// $message .= " $message .= "<IMG src="cid:$fichier"> <br> n";
$message .= "<br> n";

// Fin du message
$message .= "</BODY></HTML>n";
$message .= "n";

// on va maintenant lire le fichier et l'encoder
$fp = fopen($path, "rb");
$content = fread($fp, filesize($path));
fclose($fp);
$content_encode = chunk_split(base64_encode($content));

// Ajout de l'image
$message .= "n";
$message .= "--" . $boundary . "n";
$message .= "Content-Type: image/png; name="$fichier"n";
$message .= "Content-Transfer-Encoding: base64n";
// mettez inline au lieu de attachment pour que l'image s'affiche dans
l'email
$message .= "Content-Disposition: inlinenn";
$message .= $content_encode . "n";
$message .= "nn";
$message .= "--" . $boundary . "--n";

mail($to_email, $subject, $message, $headers);
print("$Page - envoi de l'email réussi - <b> $subject_date </b> <br> <br>
");


[/code]
Thibaut
Le #568962
Neptune nous posait la question à 1000 euro suivante :

Comment faut-il faire pour que Outlook n'indique plus de pièce jointe ?


N'es-tu pas en train de confondre outlook™ et courrier electronique mon
ami ? Que se passe-t'il si j'utilise mozilla, lotus notes, ou plus
simplement les commandes de mon os préféré passées par mon client ssh
préféré pour lire mon courrier ?

D'autre part, dans le code que tu soumets, tu balances du html sans
donner sa contre partie texte. Puis-je me permettre de porter à ton
attention le fait que ce n'est pas parce qu'un éditeur, qui plus est
situé à Redmond, USA, a décidé de transformer son client mail en
navigateur internet que ceci est la norme.

FLAME ON
-------------------------------------------------------------------
UN CLIENT EMAIL N'EST PAS DESTINE A RECEVOIR DU HTML .... CE N'EST PAS
UN NAVIGATEUR !!!
-------------------------------------------------------------------
FLAME OFF (ca fait du bien de se défouler le lundi au soleil)

Tu vas t'emmer#&@er a produire une version par type de client ? Que se
passe-t'il si l'utilisateur n'a pas outlook™ ? Que se passe-t'il si le
mailhost refuse les courriers electroniques avec attachments ? Que se
passe-t'il si ton mail est « scoré » par un outil de lutte contre le
spam (la y'a de fortes chances que tu sois marqué comme spam).

Thibaut.

Neptune
Le #568960
Bonsoir Thibaut,
Merci pour ta réponse qui me remet en place.
Tu as tout a fait raison en ce qui concerne les différents outils de
messagerie, et les outils contre les SPAMs.
Depuis mon dernier message, j'avais déjà réfhéchi au sujet des SPAMs et
rangé provisoirement mon projet sur une étagère.
Je crois que mon projet va rester longtemps sur une étagère.
Cordialement
Michel
Jean-Marc Molina
Le #569759
Je souhaiterais insérer dans mon mail des images.


Pour te simplifier la vie je te conseille d'utiliser le package Mail_Mime de
PEAR :
http://pear.php.net/manual/fr/package.mail.mail-mime.php

La fonction addHTMLImage te permet justement d'ajouter une image à ton
courriel ! En une ligne :). Par contre fais bien attention que l'image soit
stockée au même endroit que le script PHP qui envoit le courriel !

JM

Nicklas
Le #569534
Le Sat, 03 Apr 2004 20:01:25 +0000, Neptune a écrit :

Bonjour,
Avec la fonction mail(), j'envoie sans aucun problème des messages au format
HTML.
Je souhaiterais insérer dans mon mail des images.
Je ne sais comment faire. Quelqu'un a-t-il une idée ?
D'avance merci.


Tu as ma librairie qui est toute faite pour cela.

http://www.progweb.com/modules/cours/consult.php?own=4&numR

Dans l'exemple suivant picture1.jpg est dans le corps du mail.
picture2.jpg est en pièce jointe.

Ceci est testé avec la plupart des logiciels de messagerie
(Kmail, Evolution, Mozilla, Outlook, Outlook Express, Lotus...)

// Create the mail
$m = new Mail();

// Define charset and encoding
//$m->Charset('ISO-8859-15', 'quoted-printable');
//$m->Charset('ISO-8859-15', '8bit');

// Set ReturnPath
$m->ReturnPath( "" );

// Set From
$m->From( "" );

// Set To (it can be an array or a string)
// ["mail1", "mail2"] or "mail1, mail2"
$m->To( "" );

// Set Subject
$m->Subject( "the subject of the mail" );

// Set Body (by default body is text)
$message= "Hello world!nthis is a test of the Mail classnplease ignorenThanks.";
$m->Body( $message, 'text' );

$message= "Hello world! $m->Body( $message, 'html' );

// Attach a file (it can be an array or a string)
// ["file1", "file2"] or "file"
// Set disposition with optional parameter (inline or attachment)
// ["dispo1", "disp2"] or "dispo"
$m->Attach( "picture1.jpg", "inline" );
$m->Attach( "picture2.jpg", "attachment" );

// Send the mail
$m->Send();


--
Nicklas
ProgWeb - Développer son site Internet
http://www.progweb.com

Neptune
Le #571739
Bonjour Nicklas,
Ton outil est super !
Nota : J'ai juste du faire une modification au niveau du fichier :
"libmail.inc".
J'ai annulé le test "_checkMail()) " qui ne fonctionnait pas. Je n'ai pas
compris pourquoi.
Dans la "function Send() {" :
- Remplacer : if ($this->_checkMail()) {
- Par : if (1 == 1) {

Cela correspond exactement à mon besoin.
Avec mes remerciements.
Michel FOUILLADE
Administrateur de :
http://www.missions-courtes.com/
Publicité
Poster une réponse
Anonyme