Pages vues depuis 25/05/2001 : 108 482 232
Index du forum »» SFORM »» Sform et fichiers joints
Message édité par : hexagone
$to ="ma@mail.box";
$sujet = "Sujet du Mail";
$message = "Le Texte du Mail";
$chemin = "chemindufichier";
$fichier = "nomdefichier.typ";
//$reply = ;
//$from = ;
// On choisi généralement de construire une frontière générée aleatoirement
$boundary = "----="."_parties_".md5(uniqid(rand()));
//entete du message
{
//date de creation
$mail_mime = "Date: ".date("l j F Y, G:i")."\r\n";
// Version du format MIME utilisé
$mail_mime .= "!mime-version:! 1.0\r\n";
// Type de contenu. Ici plusieurs parties de type different "multipart/mixed"
// Avec un frontière définie par $boundary
$mail_mime .= "!content-type:! multipart/mixed; boundary=\"$boundary\"\r\n";
//termine l'entete avec un retour a la ligne obligatoire pour separer l'entete du corps
$mail_mime .= "\r\n";
}
//--------------------------------------------------
// Construction du message proprement dit
//--------------------------------------------------
{
//Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML
$texte = "This is a multi-part message in MIME format.\r\n";
$texte .= "Ceci est un message est au format MIME.\r\n";
}
//---------------------------------
// 1ère partie du message
// Le texte
//---------------------------------
{
// Chaque partie du message est séparé par une frontière (attention au --, ce n'est pas une erreur!)
$texte .= "--$boundary\r\n";
// Et pour chaque partie on en indique le type
$texte .= "!content-type:! text/plain; charset=\"iso-8859-1\"\r\n";
// Et comment il sera codé
$texte .= "!content-transfer-encoding:! 7bit\r\n";
//ligne vide indispensable entre type et texte
$texte .= "\r\n";
$texte .= $message."\r\n";
$texte .= "\r\n";
}
//---------------------------------
// 2nde partie du message
// Le fichier
//---------------------------------
{
// penser a convertir le contenu du fichier en une chaîne de caractère
// certe totalement illisible mais sans caractères exotiques
// et avec des retours à la ligne tout les 76 caractères
// pour être conforme au format RFC 2045
$contenu_fichier = chunk_split(base_64_encode(implode("", file($chemin.$fichier))));
// Ne pas oublier que chaque partie du message est séparé par une frontière
$attachement = "--$boundary\r\n";
// Et pour chaque partie on en indique le type
$attachement .= "!content-type:! application/octet-stream; name=\"$fichier\"\r\n";
// Et comment il sera codé
$attachement .= "!content-transfer-encoding:! base_64\r\n";
// Petit plus pour les fichiers joints
// Il est possible de demander à ce que le fichier
// soit si possible affiché dans le corps du mail
//$attachement .= "!content-disposition:! inline;";
//au cas ou on ne souhaite pas voir le fichier dans le corps
$attachement .= "!content-disposition:! attachment;";
$attachement .= " filename=\"$fichier\"\r\n";
// Il est indispensable d'introduire une ligne vide entre l'entête et le texte
$attachement .= "\r\n";
// C'est ici que l'on insère le code du fichier lu
$attachement .= $contenu_fichier . "\r\n";
$attachement .= "\r\n\r\n";
// on indique la fin par une nouvelle frontière
$attachement .= "--$boundary--\r\n";
}
//---------------------------------
// y a plus qu'a!
// mais on evite quand meme la fonction integrée a NPDS, sinon on perd la partie MIME
//---------------------------------
{
global $mail_fonction, $adminmail;
if (($mail_fonction==1) or ($mail_fonction=="")) {
$From_email=$adminmail;
if ($from!="") { $From_email=$from; }
$result=mail($to, $sujet, $texte.$attachement, "Reply-to: $reply\r\n!from:! $From_email\r\nX-Mailer: NPDS\r\n".$mail_mime);
} else {
$pos = strpos($adminmail, "@");
$tomail=substr($adminmail,0,$pos);
$result=email($tomail, $to, $sujet, $texte.$attachement, $tomail, "Reply-to: $reply\r\n!from:! $From_email\r\nX-Mailer: NPDS\r\n".$mail_mime);
}
}
Message édité par : hexagone