Page 1 sur 2
Envoie d'image par e-mail
Posté : 16 janv. 2010, 16:59
par jojo1000
Bonjour à tous,
voilà j'ai encore un problème avec mes mails. L'envoie fonctionne mais j'y ajoute une image (les permissions sont réglées et tout) mais quand j'ouvre le mail avec IE j'ai une une croix rouge à la place de l'image et avec FF j'ai une l'icone de problême de comptabilité(qui revient à la même chose que la croix rouge).
$texte = "<html><body>Voici des annonces en rapport avec votre recherche. ".$nombre." annonce(s) à voir : ";
$texte .= "<br><a href='$lien'><span style='background-color:yellow;'>Un bien correspond à votre recherche : $res->BIEN_TITRE        $type        $prix
       </span></a><img src=$annonceImage/>";
$reponse=$expediteur;
if(mail($entry->MAIL,'Alerte annonces immobilieretcredit.com',$texte.'</body></html>',
"Reply-To: $reponse\r\n".
"Content-Type: text/html; charset=\"iso-8859-1\"\r\n")) echo 'mail envoyé'; else echo 'pas envoyé';
}
$annonceImage contient bien le bon chemin et je répète que les permissions sont okay.
Est-ce que quelqu'un a une idée d'où peut venir le problème?
D'avance merci.
Re: Envoie d'image par e-mail
Posté : 16 janv. 2010, 17:29
par Ryle
Quand tu dis que ta variable $annonceImage contient le bon chemin, elle contient le bon chemin par rapport à quoi ?
C'est un chemin relatif par rapport à ton site ? (chose que le client de messagerie ne peut donc pas trouver)
C'est un chemin relatif par rapport au contenu du mail ? (auquel cas il te faut envoyer l'image avec le mail)
C'est un chemin absolu vers ton site ? (avec le
http://tondomaine.com auquel cas, il faut être connecter à internet pour la voir)
Re: Envoie d'image par e-mail
Posté : 16 janv. 2010, 17:32
par jojo1000
C'est un chemin de mon ftp, il faut donc j'envoie l'image en pièce jointe?
Re: Envoie d'image par e-mail
Posté : 16 janv. 2010, 17:52
par Ryle
Tu as deux solutions en fait... il faut soit :
- que ton image soit accessible sur internet, auquel cas tu peux mettre son url complète (avec le chemin http), et le client de messagerie affichera l'image (s'il a accès à internet)
- que ton image soit rattachée au message qui est envoyé pour pouvoir être affichée directement
Le premier est le plus simple à réaliser, le second est plus complexe , mais ne nécessite pas que la connexion internet soit active pour être consultée

Re: Envoie d'image par e-mail
Posté : 16 janv. 2010, 18:17
par jojo1000
Perso je préfère la deuxième solution.
Mais alors je vais devoir utiliser la classe Mail de PHP5 non? ce n'est pas possible avec la simple fonction mail(), si?
Re: Envoie d'image par e-mail
Posté : 16 janv. 2010, 21:57
par diabless6
Tient si ça peut t'aider

:
<?php
// on génère une frontière
$boundary = '-----=' . md5( uniqid ( rand() ) );
// on génère un identifiant aléatoire pour le fichier
$file_id = md5( uniqid ( rand() ) ) . $_SERVER['SERVER_NAME'];
// on va maintenant lire le fichier et l'encoder
$path = 'moi.jpg'; // chemin vers le fichier
$fp = fopen($path, 'rb');
$content = fread($fp, filesize($path));
fclose($fp);
$content_encode = chunk_split(base64_encode($content));
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/related; boundary=\"$boundary\"";
$message = "Ceci est un message au format MIME 1.0 multipart/mixed.\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: text/html; charset=\"iso-8859-2\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= "<html><body>coucou !, <br><br>";
$message .= "Voila une tof sexy de moi :<br>";
$message .= "<img src=\"cid:$file_id\" alt=\"ma tof!!!\"><br>";
$message .= "<br>bises @+";
$message .= "\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: image/jpg; name=\"$path\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-ID: <$file_id>\n\n";
$message .= $content_encode . "\n";
$message .= "\n\n";
$message .= "--" . $boundary . "--\n";
mail('[email protected]', 'une photo de moi...:p', $message, $headers);
?>
Re: Envoie d'image par e-mail
Posté : 17 janv. 2010, 01:10
par jojo1000
$message .= "<img src=\"cid:$file_id\" alt=\"ma tof!!!\"><br>";
C'est quoi le cid ici ?
$content_encode = chunk_split(base64_encode($content));
Et ça c'est obligatoire?
Re: Envoie d'image par e-mail
Posté : 17 janv. 2010, 01:44
par diabless6
Chaque pièce jointe qui est référencé dans le corps du message (par exemple une image dans le corps HTML) a généralement un entête Content-ID qui est utilisé pour faire référence à cet attachement du corps du message.
Par exemple, si le corps HTML contient <IMG SRC="cid:picture1">, il ya une image en pièce jointe avec Content-ID picture1. Cette image doit être affichée à la place du tag <IMG SRC="cid:picture1"> lorsque le corps est rendu HTML.
Il faut encoder un image pour pouvoir l'envoyer par mail:
http://www.commentcamarche.net/content ... mime.php3
Re: Envoie d'image par e-mail
Posté : 18 janv. 2010, 11:08
par jojo1000
D'accord merci diabless, mais si je veux joindre plusieurs images
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-ID: <$file_id>\n\n";
$message .= $content_encode . "\n";
?>
comment je fais, ça se passe ici non?
Re: Envoie d'image par e-mail
Posté : 18 janv. 2010, 14:56
par diabless6
Ben j'avoue, que je me suis pas posée la question.
Je pense que déjà, faut passer par fopen:
$path[1] = 'moi.jpg'; // chemin vers le fichier
$path[2] ='bt.jpg';
$ac=implode(",",$path);
for($x=1;$x<=sizeof($path);$x++){
$fp = fopen($ac, 'rb');}
$content = fread($fp, filesize($path));
fclose($fp);
Le problème c'est que fopen ouvre seulement un fichier ! J'ai réussie à m'envoyer un array en pièce jointe
Franchement je vois pas là

Re: Envoie d'image par e-mail
Posté : 18 janv. 2010, 15:08
par jojo1000
bon en tout cas merci pour ton aide, je vais voir ça.
Re: Envoie d'image par e-mail
Posté : 18 janv. 2010, 15:24
par diabless6
bon en tout cas merci pour ton aide, je vais voir ça.
Tient moi au courant si tu trouves ça m'intéresse

Re: Envoie d'image par e-mail
Posté : 18 janv. 2010, 15:37
par jojo1000
C'est expliqué sur phpfacile:
http://www.phpfacile.com/creer_un_site_web_en_php/envoyer_un_mail_en_php_2.php5
Re: Envoie d'image par e-mail
Posté : 18 janv. 2010, 15:46
par diabless6
Re: Envoie d'image par e-mail
Posté : 18 janv. 2010, 16:44
par diabless6
Je viens de tester le script du lien que je t'ai envoyé ! Il fonctionne super bien
