Alors comment faire pour envoyer un mail avec pièce jointe sans modifier le php.ini?
Je bloque sur ce problème depuis deux jours, et je ne trouve aucune réponse sur différents forums.
voici le code:
$dossier = "/tmp/";
$taille = $_FILES['size']['name'];
$extensions = array('.png', '.gif', '.jpg', '.jpeg', 'txt', 'doc', 'pdf');
$extension = strrchr($_FILES['cv']['name'], '.');
$taille_maxi=3000000;
if(!is_uploaded_file($_FILES['cv']['tmp_name']))
{
$erreur = "Le fichier est introuvable";
}
else
{
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($_FILES['cv']['tmp_name'], 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['cv']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
//=====Déclaration des messages au format texte et au format HTML
$message_html = "Recrutement:\r\n".$civilite." ".$nom." ".$prenom;
$message_html .= "Recrutement:\r\n".$civilite." ".$nom." ".$prenom."\r\nTél: ".$tel."\r\n".$commentaires;
//==========
//=====Lecture et mise en forme de la pièce jointe
/*$fichiers = fopen($dossier . $fichier, "r");
$attachement = fread($fichiers, $taille);
$attachement = chunk_split(base64_encode($attachement));
fclose($fichiers);*/
//==========
//=====Création de la boundary
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
//=====Définition du sujet
$sujet = "Recrutement";
//=========
//=====Création du header de l'e-mail
$header = "From: ".$nom." ".$prenom."<".$email.">\n";
$header.= "Reply-to: ".$nom." ".$prenom."<".$email.">\n";
$header.= "MIME-Version: 1.0\n";
$header.= "Content-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
//==========
//=====Création du message
$message = "\n--".$boundary."\n";
$message.= "Content-Type: multipart/alternative;\n boundary=\"$boundary_alt\"\n";
$message.= "\n--".$boundary_alt."\n";
//=====Ajout du message au format HTML
$message.="Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_html."\n";
//==========
//=====On ferme la boundary alternative
$message.= "\n--".$boundary_alt."--\n";
//==========
$message.= "\n--".$boundary."\n";
//=====Ajout de la pièce jointe
//$message .= 'Content-Type: text/plain; name="'.$fichier."\n";
$message .= 'Content-Transfer-Encoding: base64'."\n";
$message .= 'Content-Disposition:attachement; filename="CV"'.$extension.''."\n\n";
$message .= chunk_split(base64_encode(file_get_contents($dossier.$fichier)))."\n";
//==========
//=====Envoi de l'e-mail
if(mail("
yy@xx.fr",$sujet,$message,$header))
{
$erreur = 'Le mail a été envoyé';
}
else
{
$erreur = 'Le mail n\'a pu être envoyé';
}
}
else
{
$erreur = "impossible de déplacer le fichier";
}
}
else
{
echo $erreur;
}
}
Les warnings que j'obtiens sur le serveur distant sont :
Warning
: move_uploaded_file(/web/tmp/-tmp-phpnqulG3) [function.move-uploaded-file]: failed to open stream: No such file or directory in
/home/www/7f07b10f0600c52fe8910da7b4848683/web/pgs/postuler.php on line
71Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpnqulG3' to '/web/tmp/-tmp-phpnqulG3' in
/home/www/7f07b10f0600c52fe8910da7b4848683/web/pgs/postuler.php on line
71La ligne 71 fait référence à : if(move_uploaded_file($_FILES['cv']['tmp_name'], $dossier . $fichier))
Merci quand même Teclis01 pour cette rapide réponse
ça bug et y en a mar! 