OVH Community, votre nouvel espace communautaire.

mail avec piece jointe


ekozan
13/07/2011, 14h42
pour régler tout les problème il existe la lib phpmailler qui est éprouvé et approuvé
ps : tu doit avoir un simple problème d'encodage mais j'ai que survoler ton code

ps : !empty = isset

Gaston_Phone
12/07/2011, 22h44
A lire : http://www.google.com/url?sa=t&sourc...Lc0orA&cad=rja

zabuze
12/07/2011, 22h17
Bonsoir à tous.
je désire envoyer un courriel avec une pièce jointe (quelque soit le format) depuis le serveur.
Je ne vous cache pas d'avoir pomper le script.
Le résultat est que le message est bien envoyé mais sans pièce jointe !
Pouvez-vous m'aider à résoudre le passage du fichier depuis le formulaire et l'expédier par la suite ? Je vous remercie.
Le formulaire sur la 1ère feuille :
Code HTML:
"mail_fichierattache[1].php" method="post" name="mail_fichierattache[1]" enctype="multipart/form-data"> "432" border="1" class="Style3" align="center">
"hidden" name="date_debut" value ="" />"hidden" name="date_fin" value ="" />"hidden" name="sujet" value ="" />"hidden" name="max_file_size" value="1000">"file" name="joint" />"envoi" type="submit" value="ENVOI" />et le traitement sur une seconde feuille :
Code PHP:
session_start();//ouverture d'une session
$_SESSION['messagerie'] = $messagerie ;
?>
Code PHP:
$date_debut $_POST['date_debut'] ;
$date_fin $_POST['date_fin'] ;
$sujet $_POST['sujet'] ;
$pn1 $_POST['pn1'] ;
$pn2 $_POST['pn2'] ;
$pn3 $_POST['pn3'] ;

$destinataire="courriel@fai.fr" ;
$expediteur=$messagerie;

$message $_POST['message'] ;
$joint $_POST['joint'] ;
?>
Code PHP:
/* partie générale de l'en-tête
 ******************************/
 
$entete  "From: $expediteur\r\n";
 
$entete .= "Reply-To: $expediteur\r\n";
 
$entete .= "MIME-Version: 1.0\r\n";
 
$entete .= "X-Mailer: PHP\r\n";

/******************************
 * Cas ajout d'un fichier joint
 ******************************/
if (!empty($joint)) {
 
$fich$_FILES['joint']['tmp_name'];
 
$taille $_FILES['joint']['size'];
 
$type $_FILES['joint']['type'];
 
$nom $_FILES['joint']['name'];

// ajout d'un texte à la saisie
 
$message .= "\r\nNB Ajout d'une pièce jointe : $nom\r\n";
// ouverture du fichier joint uploadé en lecture
 
$f fopen($fich"r") or die("ouverture du fichier $fich impossible ...");
// récupération du code du fichier joint
 
$code =fread($f$taille);
// encodage standard
 
$code chunk_split(base64_encode($code));

 
/* dans le cas de l'envoi d'un fichier joint
 * il convient de séparer le corps du message du fichier
 * pour cela on utilise un identifiant de séparateur
 *******************************************************/
// identifiant de séparateur, en principe unique
 
$limite md5(uniqid(time() ));

/* composition de l'en-tête du message :
 * le message textuel suivi du code du fichier
 *********************************************/
 
$entete .= "Content-Type: multipart/mixed;boundary=$limite\r\n\r\n";

 
$entete .= "--$limite\r\n";
 
$entete .= "Content-type:text/plain;charset=us-ascii\r\n";
 
$entete .= "Content-transfer-encoding:8bit\r\n\r\n";
 
$entete .= "$message\r\n";

 
$entete .= "--$limite\r\n";
 
$entete .= "Content-type:$type;name=$nom\r\n";
 
$entete .= "Content-transfer-encoding:base64\r\n\r\n";
 
$entete .= "$code\r\n";
 
$entete .= "--$limite--";

 
/**************************
 * envoi du message AVEC pj
 ***************************/
 
$ok=mail($destinataire$sujet,"",$entete);
}

else {

 
/**************************
 * envoi du message SANS pj
 ***************************/
  
$ok=mail($destinataire$sujet,$message,$entete);
}

// message de compte-rendu de la fonction mail
if ($ok)
  echo 
"Envoi réussi !";
else
  echo 
"L'envoi a échoué ..";
?>

"32">PN1 "pn1" type="checkbox" id="pn1" value="pn1" /> "33">PN2"pn2" type="checkbox" id="pn2" value="pn2" /> "30">PN3"pn3" type="checkbox" id="pn3" value="pn3" />