Index du Forum » » SFORM

Auteur

Sform et fichiers joints
hexagone
188     

  Posté : 13-07-2005 15:56

Re,

alors finalement, je pense qu'il y avait un peu des 2..
la fonction send_mail de NPDS qui pose kkes soucis, et peut etre le contenu du mail qui ne facilitait pas l'interpretation..
Mais la partie SFROM en elle meme me semble correcte..

enfin bref, voici un exemple "type" d'envoi de mail avec fichier attaché...





$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);
}
}





et comme NPDS rajoute des caracteres ds le code, le fichier est ici

et si ca te pose toujours des problemes, recontacte moi par MI, je ne passe pas souvent par ce forum..

(faudrait ptetre ameliorer un poil la fonction integrée send_mail de NPDS...?)

+


Message édité par : hexagone




Cet article provient de NPDS

http://www.npds.org/viewtopic.php?topic=17046&forum=19