Probleme avec mail() et pièces jointes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme avec mail() et pièces jointes

Re: Probleme avec mail() et pièces jointes

par Toons43 » 30 mars 2010, 16:50

Ca y'est j'ai trouvé :D
C'est la frontière avant la pièce jointe que j'avais "fermé"
$mail .= '--'.$frontiere.'--'."\n"; 

REMPLACER PAR

$mail .= '--'.$frontiere."\n"; 
Merci visualight pour l'aide et à bientôt

Re: Probleme avec mail() et pièces jointes

par Toons43 » 30 mars 2010, 14:33

:( Non toujours pas de pièces jointes reçu, je ne comprend vraiment d'où ça peut venir, ça doit être tout bête

Re: Probleme avec mail() et pièces jointes

par visualight » 30 mars 2010, 14:19

Le reste de ton code me semblant logique et fonctionnel, je pense tout de même que le problème viens de là ... essaye un peu :
$fichier = chunk_split(base64_encode(file_get_contents($attach_tmp_name)))."\n\n"; 
$mail .= 'Content-Transfer-Encoding: base64'."\r\n";
$mail .= 'Content-Disposition: attachement; filename="'.$attach_name.'"'."\r\n\n $fichier"; 

OU

$mail .= 'Content-Disposition: attachement; filename="'.$fichier.'"'."\r\n\n"; 

Re: Probleme avec mail() et pièces jointes

par Toons43 » 30 mars 2010, 14:07

Non déjà testé ça ne vient pas de là, merci quand même

Re: Probleme avec mail() et pièces jointes

par visualight » 30 mars 2010, 14:01

Je ne sais pas mais :
$mail .= 'Content-Disposition: attachement; filename="'.$attach_name.'"'."\n"; 
Ca ne devrait pas plutôt être :
$mail .= 'Content-Disposition: attachement; filename="'.$attach_tmp_name.'"'."\n";

???? Pas testé

Probleme avec mail() et pièces jointes

par Toons43 » 30 mars 2010, 13:57

Bonjour à tous,

Je crée actuellement un formulaire avec la possibilité d'envoyer une pièce jointe, mon code me semble correct mais je ne reçois pas la pièce jointe, je reçois uniquement le contenu du message.

Voici mon code simplifié :
// Adresse de réception du formulaire
$email_dest = '[email protected]';
//----------------------------------------------- 
//GENERE LA FRONTIERE DU MAIL ENTRE HTML ET PIECE JOINTE 
//----------------------------------------------- 
$frontiere = '-----=' . md5(uniqid(mt_rand())); 
//----------------------------------------------- 
//HEADERS DU MAIL 
//----------------------------------------------- 
$headers = 'MIME-Version: 1.0'."\n";
$headers .= 'From: '.$email.''."\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"'; 
//----------------------------------------------- 
//CONSTRUCTION MESSAGE HTML 
//----------------------------------------------- 
$subject = 'Message de ma page';

$entete = '<html><head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
</head>
<body bgcolor="#FFFFFF">';

$corps = '<font face="Verdana" size="2" color="#003366">Vous avez reçu un message de votre page</font>';

$fin = '</body></html>';

$sortie = $entete . $corps . $fin;
//----------------------------------------------- 
//AJOUT DU MESSAGE HTML AU MAIL
//----------------------------------------------- 
$mail = 'This is a multi-part message in MIME format.'."\n\n"; 

$mail .= '--'.$frontiere."\n"; 
$mail .= 'Content-Type: text/html; charset=utf-8'."\n"; 
$mail .= 'Content-Transfer-Encoding: 7bit'."\n\n"; 
$mail .= $sortie."\n\n"; 

$mail .= '--'.$frontiere.'--'."\n"; 
//----------------------------------------------- 
//PIECE JOINTE 
//----------------------------------------------- 
$attach_tmp_name = $_FILES['attach']['tmp_name'];
$attach_type = $_FILES['attach']['type'];
$attach_name = $_FILES['attach']['name'];

$mail .= 'Content-Type: '.$attach_type.'; name="'.$attach_name.'"'."\n"; 
$mail .= 'Content-Disposition: attachement; filename="'.$attach_name.'"'."\n"; 
$mail .= 'Content-Transfer-Encoding: base64'."\n\n"; 

$mail .= chunk_split(base64_encode(file_get_contents($attach_tmp_name)))."\n\n"; 

$mail .= '--'.$frontiere.'--'."\n"; 

//Envoi du message
$resultat = mail($email_dest,$subject,$mail,$headers);

if($resultat) {
    $message = 'Votre message a bien été envoyé.';
} else {
    $message = 'Echec dans l\'envoi de votre message, veuillez réessayer.';
}
Est-ce que vous voyez quelque chose qui cloche, parce que là j'ai tout tenté :cry:

D'avance merci pour vos réponses