Envoie d'un mail avec piece jointe en php

Résolu/Fermé
Lilouse64 Messages postés 99 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 avril 2012 - 2 mars 2010 à 10:42
Lilouse64 Messages postés 99 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 avril 2012 - 2 mars 2010 à 11:12
Bonjour,

J'ai un soucis pour envoyer un mail avec mail(). Mon script doit pouvoir envoyer un mail contenant du texte et une image en pièce jointe. J'ai suivie le tuto disponible sur https://www.commentcamarche.net/faq/2761-langages-envoyer-un-mail-avec-piece-jointe et j'ai réussi après bien des tentatives infructueuse. Cette réussite à été fait dans un fichier test.php ne contenant que la base d'une page html et le script d'envois de mail en question.

Le problème vient que lorsque je place ce script à son bon emplacement, il me marque une erreur à la fonction mail. Ce nouveau fichier s'appelle sauvMailImage.php il est appelé à partir d'un bouton d'un formulaire et permet de créer une image avec la fonction imagettftext(). Je souhaite donc comme vous l'avez compris envoyer le résultat par mail et ensuite effacer mon image. Et c'est la ou ça coince.

Dans mon fichier test.php j'ai aussi essayé avec une l'image créé par sauvMailImage.php et aucun problème. Il y a peut être un élément dont je me sert pour imagettftext() qui empêche ensuite l'envoie du mail.

mon script pour l'envoie du mail présent dans les 2 fichiers (j'ai changé les adresses emails pour vous montrer le code):
<?php

// séparateur
$frontiere = md5(uniqid(mt_rand()));
// en tête
$headers = "From: \"no reply\" <noreply@nomDEntreprise.com> \n\r";
$headers .= "MIME-Version: 1.0 \n\r";
$headers .= "Content-Type: multipart/mixed; boundary=\"$frontiere\" \r\n\n";
// Le message
// Contenu
$message = "--".$frontiere."\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\" \r\n\n";
$contenu = "qu'es ce que ça fait si on met un truc ici ? \n\n";
$message .=$contenu;
// pièce jointe
$message .= "--".$frontiere."\n";
$pieceJointe = "Content-Type: image/png; name=\"./Images/sauv/temp.png\" \r\n";
$pieceJointe .= "Content-Transfer-Encoding: base64 \r\n";
$pieceJointe .= "Content-Disposition:attachement; filename=\"banniere.png\" \r\n\n";
$pieceJointe .= chunk_split(base64_encode(file_get_contents("./Images/sauv/temp.png")))."\n\n";
$message .=$pieceJointe;
// Fin du message
$message .= "--".$frontiere."--";
// Envoie
mail("prenom@nomDEntreprise.com", "Votre Image",$message,$headers);
mail("pseudo@gmail.com", "Votre Image",$message,$headers);

?>

Merci d'avance pour l'aide que vous pourrez m'apporter.

EDIT : l'erreur que j'ai est : "parse error " sur la premiere ligne mail("prenom@nomDEntreprise.com", "Votre Image",$message,$headers);
A voir également:

1 réponse

Lilouse64 Messages postés 99 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 avril 2012 12
2 mars 2010 à 11:12
Bon en faite je viens de trouver, il y avait une légère différence entre les 2, une parenthèse qui trainé d'un ancien if que j'avais supprimé dans un fichier et pas dans l'autre.

Problème résolue
1