Débutant en PHP, j'ai réussi à construire une formulaire avec pièce jointe et à me l'envoyer par mail.
Ce formulaire fonctionne bien chez free et un autre herbergeur mais pas chez mon herbergeur actuel (planethoster) : il n'y a pas de pièce jointe.
J'ai passé des heures à vérifier, modifier, tester mais rien n'y...
Si quelqu'un a une idée, je suis preneur. Merci d'avance.
Emmanuel.
NB : il y a bien multipart/mixed
l'input de la pièce jointe est "attach"
l'adresse $to est fictive
<?php
if(isset($_POST) && isset($_POST['email'])){
extract($_POST);
if (!empty($email)&&!empty($nom)&&!empty($tel)&&!empty($imprimer)){
$to = "[email protected]";
$sujet = "demande de : $nom<$email> ";
$entetes = "From: $nom<$email>\r\n";
$entetes .= "MIME-version: 1.0\n";
$entetes .= "Content-type: multipart/mixed; ";
$entetes .= "boundary=\"Message-Boundary\"\n";
// corps du mail en PLAIN
$msg = "--Message-Boundary\n";
$msg .= "Content-type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 8bit\n";
$msg .= "demande\n
$message\n";
// traitement pièce jointe
if (is_uploaded_file($attach)) {
$contenu = file_get_contents($attach);
$msg .= "\n\n--Message-Boundary\n";
$msg .= "Content-type: $attach_type; name=\"$attach_name\"\n";
$msg .= "Content-Transfer-Encoding: BASE64\n";
$msg .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
$msg .= chunk_split(base64_encode($contenu));
}
// envoie du mail
mail($to,$sujet,$msg,$entetes);
print "Votre demande a bien été envoyé.";
}
else{
print "Merci de remplir tous les champs…";
}
}
?>