J'essaie d'envoyer par courrier électronique une image sur mon serveur en pièce jointe. Pour accomplir cette tâche, j'ai utilisé le script PHP suivant qui saisit un fichier JPG (appelé "php.jpg") situé dans un répertoire appelé "screenshots" de mon serveur et l'envoie en pièce jointe.Problème avec la pièce jointe dans le courrier électronique()
<?php
$path = "screenshots/php.jpg";
$fp = fopen($path, 'r');
do //we loop until there is no data left
{
$data = fread($fp, 8192);
if (strlen($data) == 0) break;
$content .= $data;
} while (true);
$content_encode = chunk_split(base64_encode($content));
$mime_boundary = "<<<--==+X[".md5(time())."]";
$headers .= "From: Automatic <[email protected]>\r\n";
$headers .= "To: SomeName <[email protected]>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed;\r\n";
$headers .= " boundary=\"".$mime_boundary."\"";
$message .= "This is a multi-part message in MIME format.\r\n";
$message .= "\r\n";
$message .= "--".$mime_boundary."\r\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$message .= "Content-Transfer-Encoding: 7bit\r\n";
$message .= "\r\n";
$message .= "Email content and what not: \r\n";
$message .= "This is the file you asked for! \r\n";
$message .= "--".$mime_boundary."\r\n";
$message .= "Content-Type: image/jpeg;\r\n";
$message .= " name=\"php.jpg\"\r\n";
$message .= "Content-Transfer-Encoding: quoted-printable\r\n";
$message .= "Content-Disposition: attachment;\r\n";
$message .= " filename=\"php.jpg\"\r\n";
$message .= "\r\n";
$message .= $content_encode;
$message .= "\r\n";
$message .= "--".$mime_boundary."\r\n";
$ok = mail("[email protected]", "file by email", $message, $headers);
Dans l'ensemble, le script fonctionne. Je reçois un e-mail dans ma boîte de réception contenant le texte du message spécifié ci-dessus et une pièce jointe JPG. Stack Overflow ne permet pas de poster une photo parce que je suis nouveau, mais une capture d'écran du message est disponible ici: http://i48.tinypic.com/xfuee0.png
Mon problème se produit lorsque j'essaie d'afficher la pièce jointe. Cliquer sur la pièce jointe ouvre simplement une nouvelle fenêtre de navigateur et affiche une icône d'image manquante.
Voyez-vous des problèmes avec mon script qui empêcheraient l'apparition de l'image?
Toute information serait géniale. Merci!
J'ai essayé les suggestions de wallyk et martinr jusqu'à présent (merci les gars!), Mais pas de chance. Je me demande si la fonction mail est peut-être bien et c'est juste ma boucle fopen qui ne produit pas l'image correcte. Tout autre conseil que quelqu'un pourrait fournir serait apprécié. Merci tout le monde! – Matt