Envoie d'un mail avec piece jointe en php
Résolu
Lilouse64
Messages postés
99
Date d'inscription
Statut
Membre
Dernière intervention
-
Lilouse64 Messages postés 99 Date d'inscription Statut Membre Dernière intervention -
Lilouse64 Messages postés 99 Date d'inscription Statut Membre Dernière intervention -
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);
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:
- Envoie d'un mail avec piece jointe en php
- Pièce d'identité - Accueil - Services publics
- 1 pièce jointe - Guide
- Publipostage mail - Accueil - Word
- Gmail envoyer un mail - Guide
- Windows live mail - Télécharger - Mail