2000 * 1000) { $erreurs[] = "La taille du fichier joint dépasse la taille autorisée.
Votre fichier est de ".number_format($pj_size, 2, ",", " ")." Ko et la taille maximale autorisée est de 2000 Ko"; } } if(count($erreurs) == 0) { // supprime les caractères d'échappement $nom = stripslashes($nom); $objet = stripslashes($objet); $content = stripslashes($content); // teste si le champ Objet est rempli ; encodage de la chaîne en iso-8859-1 if($objet) $subject = "=?iso-8859-1?q?".str_replace("%", "=", rawurlencode(stripslashes($objet))."?="); else $subject = ""; //-- début des en-têtes -- $headers = "From: "; // teste si le champ Nom est rempli ; encodage de la chaîne en iso-8859-1 if($nom) $headers .= "=?iso-8859-1?q?".str_replace("%", "=", rawurlencode(stripslashes($nom))."?="); // adresse email de l'expéditeur $headers .= "<$from>\n"; $headers .= "X-Sender: \n"; // priorité (de 1 à 5) $headers .= "X-Priority: $priorite\n"; // maileur $headers .= "X-Mailer: docphp.free.fr\n"; // adresse email de retour en cas d'échec $headers .= "Return-Path: <$from>\n"; // teste si le champ Cc est rempli pour l'ajouter à l'en-tête if($cc) $headers .= "cc: $cc\n"; // teste si un fichier est joint au message if(file_exists($pj)) { // génère un nombre aléatoire unique servant de délimiteur que l'on ne peut trouver nulle part dans le corps du message $boundary = md5(uniqid(rand())); // c'est un message au format MIME $headers .= "MIME-Version: 1.0\n"; // ce message est composé de plusieurs parties $headers .= "Content-Type: multipart/mixed;\n\tboundary=\"$boundary\""; //-- corps du message -- $message = "C'est un message de format MIME en plusieurs parties.\n\n"; $message .= "--$boundary\n"; // type MIME, version du mail (HTML ou texte pur) $message .= "Content-Type: text/$enc_texte; charset=iso-8859-1\n"; // format d'encodage des données $message .= "Content-Transfer-Encoding: 8bit\n\n"; // contenu du message $message .= "$content\n\n"; $pj_name = "=?iso-8859-1?q?".str_replace("%", "=", rawurlencode(stripslashes($pj_name))."?="); // teste si le navigateur envoie le type MIME du fichier joint if($pj_type) $type_mime = $pj_type; else // type MIME par défaut $type_mime = "application/octet-stream"; // lecture du fichier temporaire; son contenu est placé dans la variable $fichier_joint $fp = fopen($pj,"r"); $fichier_joint = fread($fp,filesize($pj)); fclose($fp); $message .= "--$boundary\n"; // si c'est un fichier texte if(eregi("text",$pj_type)) { // définition du champ type $message .= "Content-Type: $type_mime;\n\tname=\"$pj_name\"\n"; // encodage en 8 bits $message .= "Content-Transfer-Encoding: 8bit\n"; // affichage du fichier joint dans le mail ("inline"); l'autre possiblité est "attachment" (comme pièce jointe) $message .= "Content-Disposition: inline;\n\tfilename=\"$pj_name\"\n\n"; $message .= "$fichier_joint\n"; } else { // lecture et encodage du fichier joint en base64 // conforme à la norme RFC 2045 : scinde une chaîne en plusieurs morceaux // en plusieurs lignes de 76 caractères délimitées par les caractères "\r\n" $fichier_joint = chunk_split(base64_encode($fichier_joint)); // définition du champ type $message .= "Content-Type: $type_mime;\n\tname=\"$pj_name\"\n"; // encodage du fichier joint en base64 $message .= "Content-Transfer-Encoding: base64\n"; // affichage du fichier joint dans le mail ("inline"); l'autre possiblité est "attachment" (comme pièce jointe) $message .= "Content-Disposition: inline;\n\tfilename=\"$pj_name\"\n\n"; $message .= "$fichier_joint\n"; $message .= "--$boundary--"; } // pas de fichier joint } else { $headers .= "Content-Type: text/$enc_texte; charset=iso-8859-1\n"; $message = $content; } // envoie le(s) mail(s) if(!@mail($to, $subject, $message, $headers)) $erreurs[] = "Erreur interne au serveur. Le message à $to n'a pu être envoyé."; if($cc) { $adresses = explode(",",$cc); while(list(,$v) = each($adresses)) { if(!@mail($v, $subject, $message, $headers)) $erreurs[] = "Erreur interne au serveur. Le message à $v n'a pu être envoyé."; } } if($bcc) { $adresses = explode(",",$bcc); while(list(,$v) = each($adresses)) { if(!@mail($v, $subject, $message, $headers)) $erreurs[] = "Erreur interne au serveur. Le message à $v n'a pu être envoyé."; } } if(count($erreurs) == 0) { // redirige vers le formulaire en cas de succès header("Location:formmail.php"); exit; } } } ?>