formulaire avec piece jointe qui ne fonctionne pas

emmanuellyon
Invité n'ayant pas de compte PHPfrance

09 août 2010, 14:17

Bonjour,

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…";
    }
}
?>


ViPHP
ViPHP | 5462 Messages

09 août 2010, 16:13

essaye avec multipart/alternative a la place de multipart/mixed :wink:

emmanuellyon
Invité n'ayant pas de compte PHPfrance

09 août 2010, 16:39

Merci pour ta réponse mais cela ne fonctionne toujours pas... :cry:

Je me suis trompé en disant qu'il y avait bien le multipart/mixed... Je voulais dire qu'il y avait bien :
<FORM encType=multipart/form-data method=post>

ViPHP
ViPHP | 5462 Messages

09 août 2010, 16:45

ta bien changé ici :
$entetes .= "Content-type: multipart/mixed; ";
?

emmanuellyon
Invité n'ayant pas de compte PHPfrance

09 août 2010, 16:57

Oui, j'ai bien remplacé mixed par alternative à cet endroit.

Et d'après ce que j'ai compris, "alternative" sert lorsque l'on du texte en plain et en html. Je ne veux mon texte qu''en plain.

Merci quand même.

emmanuellyon
Invité n'ayant pas de compte PHPfrance

09 août 2010, 23:54

bonsoir,

ca y est, cela fonctionne et le problème venait de la configuration des serveurs de mon hébergeur : variable register_globals.
il a fait la modif.