Code PHP, Upload et envoi fichier mail
Posté : 14 oct. 2010, 22:59
Bonsoir,
Voilà des jours que j'essaye de me familiariser avec le PHP souhaitant réaliser un envoi par mail d'une PJ à partir d'un formulaire HTML. Il va s'en dire que je galère en tant que débutant
J'ai cru comprendre qu'il fallait que je réalise deux actions : Uploader le fichier dans un dossier / Récupérer le fichier, le lire, le coder et l'envoyer par mail avec du texte.
J'ai donc tenté de faire un code qui réalise ces deux opérations (dans le même fichier) mais je suis complètement largué. J'ai des messages d'erreurs m'indiquant que j'ai une erreur d'upload. Comme si le fichier n'était pas là où il devrait se trouver ... Je commence à être à court de solutions alors si vous pouviez me donner un coup de pouce ça m'aiderait beaucoup.
La première partie concerne l'upload, la seconde le mail et son envoi. J'ai supprimé les vérifications de champs que j'avais codé (et qui marchaient) parce que je me perdait dans toutes ces lignes ...
En espérant que quelqu'un puisse m'aider et accepte de passer un peu de temps à corriger mes erreurs de débutant
Merci d'avance
Voilà des jours que j'essaye de me familiariser avec le PHP souhaitant réaliser un envoi par mail d'une PJ à partir d'un formulaire HTML. Il va s'en dire que je galère en tant que débutant
J'ai cru comprendre qu'il fallait que je réalise deux actions : Uploader le fichier dans un dossier / Récupérer le fichier, le lire, le coder et l'envoyer par mail avec du texte.
J'ai donc tenté de faire un code qui réalise ces deux opérations (dans le même fichier) mais je suis complètement largué. J'ai des messages d'erreurs m'indiquant que j'ai une erreur d'upload. Comme si le fichier n'était pas là où il devrait se trouver ... Je commence à être à court de solutions alors si vous pouviez me donner un coup de pouce ça m'aiderait beaucoup.
La première partie concerne l'upload, la seconde le mail et son envoi. J'ai supprimé les vérifications de champs que j'avais codé (et qui marchaient) parce que je me perdait dans toutes ces lignes ...
En espérant que quelqu'un puisse m'aider et accepte de passer un peu de temps à corriger mes erreurs de débutant
Merci d'avance
<?php
$dossier = 'Photo/';
$fichier = basename($_FILES['Photo']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['Photo']['tmp_name']);
$extensions = array('.bmp', '.jpg', '.jpeg');
$extension = strrchr($_FILES['Photo']['name'], '.');
//Début des vérifications de sécurité
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type bmp, jpg ou jpeg.';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop volumineux.';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur sur l'upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['Photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
?>
<?php
$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "Content-Transfer-Encoding: utf-8\r\n";
$header .= "\r\n";
$header .= "Content-Type: text/plain; charset=utf-8\r\n";
$sujet = "Demande de publication Annonce - Petites Annonces CE SISTM";
//----------------
// Le texte
//----------------
$texte .= "--$boundary\r\n";
$texte .= "Content-Type: text/html; charset=utf-8\n";
$texte .= "Content-Transfer-Encoding: utf-8\r\n";
$texte .= "\r\n";
$texte .= "DEMANDE DE VALIDATION D'ANNONCE\n\n";
$texte .= "Date : $date\n";
$texte .= "Heure : $heure\n\n";
$texte .= "------------------------------------------\n\n";
$texte .= "Nom : $Nom\n";
$texte .= "Prénom : $Prenom\n";
$texte .= "Secteur-Centre : $Secteur, $Centre\n\n";
$texte .= "------------------------------------------\n\n";
$texte .= "Rubrique : $Rubrique\n";
$texte .= "Intitulé de l'objet : $Intitule\n";
$texte .= "Description : $Description\n";
$texte .= "Etat : $Etat\n\n";
$texte .= "------------------------------------------\n\n";
$texte .= "Prix : $Prix\n";
$texte .= "Moyen de Paiement : $sqlPaiement\n\n";
$texte .= "Autre Paiement : $AutrePaiement\n";
$texte .= "Mode de Livraison : $sqlLivraison\n\n";
$texte .= "Autre Livraison : $AutreLivraison\n";
$texte .= "\r\n\r\n";
//---------------------------------
// Le fichier
//---------------------------------
$file = "Photos/$fichier";
if (file_exists($file))
{
$fp = fopen($file, "b");
$attachment = fread($fp, filesize($file));
fclose($fp);
$attachment = chunk_split(base64_encode($attachment));
$texte .= "--$boundary\r\n";
$texte .= "Content-Type: image/jpeg; name=\"$file\"\r\n";
$texte .= "Content-Transfer-Encoding: base64\r\n";
$texte .= "Content-Disposition: attachment; filename=\"$file\"\r\n";
$texte .= "\r\n";
$texte .= $attachment . "\r\n";
$texte .= "\r\n\r\n";
}
else
{
echo 'Erreur upload fichier';
}
$texte .= "--$boundary--\r\n";
$destinataire = "[email protected]";
mail($destinataire, $sujet, $texte, $header);
?>