Entête de mail est foireuses
Résolu
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Depuis quelques jours mes contacts n'arrivent plus ) m'envoyer de mails. Il reçoivent un message d'erreur
Voici mon code et sollicite votre aide pour correction:
Merci d'avance
Depuis quelques jours mes contacts n'arrivent plus ) m'envoyer de mails. Il reçoivent un message d'erreur
Warning: mail(): Multiple or malformed newlines found in additional_headerà la ligne
if(mail(LE_MAIL, $titre, stripslashes($corps), $tete)){$ok_mail="true";
Voici mon code et sollicite votre aide pour correction:
<?php if(isset($_POST['Envoyer'])){$erreur=""; // Nettoyage des entrées while(list($var,$val)=each($_POST)){if(!is_array($val)){$$var=strip_tags($val);} else{while(list($arvar,$arval)=each($val)){$$var[$arvar]=strip_tags($arval);}}} // Formatage des entrées $f_Nom = trim(ucwords(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_Nom))); $f_Telephone = trim(preg_replace("[^0-9\ +]", "", $f_Telephone)); $f_Email = trim(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_Email)); $f_Observation = trim(preg_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_Observation)); // Verification des champs if(strlen($f_Nom)<2) {$erreur.="<li>".$ERREUR_CHAMP_1.'<strong>'.$CONTACT_NOM.'</strong>'.$ERREUR_CHAMP_2; $errf_Nom=1;} if($f_Postule==0) {$erreur.="<li>".$ERREUR_CHAMP_1.'<strong>'.$CONTACT_POSTULE.'</strong>'.$ERREUR_CHAMP_2; $errf_Postule=1;} if(strlen($f_Email)<2) {$erreur.="<li>".$ERREUR_CHAMP_1.'<strong>'.$CONTACT_EMAIL.'</strong>'.$ERREUR_CHAMP_2; $errf_Email=1; }else{ if(!preg_match('/^[^@]{1,64}@[^@]{1,255}$/', $f_Email)) {$erreur.="<li>".$ERREUR_SYNTX_1.'<strong>'.$CONTACT_EMAIL.'</strong>'.$ERREUR_SYNTX_2; $errf_Email=1;}} if(strlen($f_Telephone)<2) {$erreur.="<li>".$ERREUR_CHAMP_1.'<strong>'.$CONTACT_TELEPHONE.'</strong>'.$ERREUR_CHAMP_2; $errf_Telephone=1;} if($_FILES['f_Curriculum']['error'] == UPLOAD_ERR_NO_FILE) {$erreur.="<li>".$ERREUR_CHAMP_1.'<strong>'.$CONTACT_CV.'</strong>'.$ERREUR_CHAMP_2; $errf_Curriculum=1;} if($_FILES['f_Motivation']['error'] == UPLOAD_ERR_NO_FILE) {$erreur.="<li>".$ERREUR_CHAMP_1.'<strong>'.$CONTACT_LETTRE.'</strong>'.$ERREUR_CHAMP_2; $errf_Motivation=1;} if(strlen($f_Observation)<2) {$erreur.="<li>".$ERREUR_CHAMP_1.'<strong>'.$CONTACT_OBSERVATION.'</strong>'.$ERREUR_CHAMP_2; $errf_Observation=1;} if($erreur==""){ @mkdir ("_/",0777,true) ; $upload_file1 = '_/'.$_FILES['f_Curriculum']['name']; $upload_file2 = '_/'.$_FILES['f_Motivation']['name']; if (move_uploaded_file($_FILES['f_Curriculum']['tmp_name'], $upload_file1)) { $ext1 = explode(".", basename($_FILES['f_Curriculum']['name'])); switch($ext1[1]) {default: $attach_type1 = "application/octet-stream"; break; case "gz": $attach_type1 = "application/x-gzip"; break; case "tgz": $attach_type1 = "application/x-gzip"; break; case "zip": $attach_type1 = "application/zip"; break; case "pdf": $attach_type1 = "application/pdf"; break; case "png": $attach_type1 = "image/png"; break; case "gif": $attach_type1 = "image/gif"; break; case "jpg": case"jpeg": $attach_type1 = "image/jpeg"; break; case "txt": $attach_type1 = "text/plain"; break; case "htm": $attach_type1 = "text/html"; break; case "html": $attach_type1 = "text/html"; break;} if (move_uploaded_file($_FILES['f_Motivation']['tmp_name'], $upload_file2)) { $ext2 = explode(".", basename($_FILES['f_Motivation']['name'])); switch($ext2[1]) {default: $attach_type2 = "application/octet-stream"; break; case "gz": $attach_type2 = "application/x-gzip"; break; case "tgz": $attach_type2 = "application/x-gzip"; break; case "zip": $attach_type2 = "application/zip"; break; case "pdf": $attach_type2 = "application/pdf"; break; case "png": $attach_type2 = "image/png"; break; case "gif": $attach_type2 = "image/gif"; break; case "jpg": case"jpeg": $attach_type2 = "image/jpeg"; break; case "txt": $attach_type2 = "text/plain"; break; case "htm": $attach_type2 = "text/html"; break; case "html": $attach_type2 = "text/html"; break;} if(file_exists($upload_file1)) { $file1 = fopen($upload_file1, "r"); $contents1 = fread($file1, filesize($upload_file1)); $encoded_attach1 = chunk_split(base64_encode($contents1)); fclose($file1);} if(file_exists($upload_file2)) { $file2 = fopen($upload_file2, "r"); $contents2 = fread($file2, filesize($upload_file2)); $encoded_attach2 = chunk_split(base64_encode($contents2)); fclose($file2);} $frontiere = '-----=' . md5(uniqid(mt_rand())); // Titre du message $titre=$REC_OffreEmploi." : ".$list['f_Postule'][$f_Postule]; // Entête du message $tete.="From:".$f_Email."\n"; $tete.='MIME-Version: 1.0'."\n"; $tete.='Content-Type: multipart/mixed; boundary="'.$frontiere.'"'."\n"; $tete.= '--'.$frontiere."\n"; // Première pièce jointe $tete.= "Content-type: ".$attach_type1."; name=".$upload_file1."\n"; $tete.= "Content-Length:".filesize($upload_file1)."\n"; $tete.= "Content-transfer-Encoding: BASE64\n"; $tete.= "Content-disposition: attachment; filename=".$upload_file1."\n\n"; $tete.= $encoded_attach1."\n".'--'.$frontiere."\n"; // Seconde pièce jointe $tete.= "Content-type: ".$attach_type2."; name=".$upload_file2."\n"; $tete.= "Content-Length:".filesize($upload_file2)."\n"; $tete.= "Content-transfer-Encoding: BASE64\n"; $tete.= "Content-disposition: attachment; filename=".$upload_file2."\n\n"; $tete.= $encoded_attach2."\n".'--'.$frontiere."\n"; // Corps du message $corps.=$CONTACT_NOM." : ".$f_Nom."\n"; $corps.=$CONTACT_POSTULE." : ".$list['f_Postule'][$f_Postule]."\n"; $corps.="\n"; $corps.=$CONTACT_TELEPHONE." : ".$f_Telephone."\n"; $corps.=$CONTACT_EMAIL." : ".$f_Email."\n"; $corps.=$CONTACT_OBSERVATION." : ".$f_Observation."\n"; // Envois du mail if(mail(LE_MAIL, $titre, stripslashes($corps), $tete)) {$ok_mail="true";} //Sinon else{$erreur.="<div class='TexteError'>".$ERREUR_ERROR_1."</div>";} }} }} ?>
Merci d'avance
A voir également:
- Mail(): multiple or malformed newlines found in additional_header
- Or - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Deco in paris avis ✓ - Forum Consommation & Internet
- Paris multiple 2/5 explication ✓ - Forum Loisirs / Divertissements
10 réponses
Merci Nhavy,
Effectivement, l'erreur est sur les pièce jointe. Si je supprime ces 2 blocs il fonctionne... mais si je garde 1 seul il ne fonctionne pas. Je n'arrive pas à corriger le problème :s
Effectivement, l'erreur est sur les pièce jointe. Si je supprime ces 2 blocs il fonctionne... mais si je garde 1 seul il ne fonctionne pas. Je n'arrive pas à corriger le problème :s
// Entête du message $tete.="From:".$f_Email."\n"; $tete.='MIME-Version: 1.0'."\n"; $tete.='Content-Type: multipart/mixed; boundary="'.$frontiere.'"'."\n"; $tete.= '--'.$frontiere."\n"; // BLOC A SOUCIS // Première pièce jointe $tete.= "Content-type: ".$attach_type1."; name=".$upload_file1."\n"; $tete.= "Content-Length:".filesize($upload_file1)."\n"; $tete.= "Content-transfer-Encoding: BASE64\n"; $tete.= "Content-disposition: attachment; filename=".$upload_file1."\r\n"; $tete.= $encoded_attach1."\n".'--'.$frontiere."\n"; // Seconde pièce jointe $tete.= "Content-type: ".$attach_type2."; name=".$upload_file2."\n"; $tete.= "Content-Length:".filesize($upload_file2)."\n"; $tete.= "Content-transfer-Encoding: BASE64\n"; $tete.= "Content-disposition: attachment; filename=".$upload_file2."\r\n"; $tete.= $encoded_attach2."\n".'--'.$frontiere."\n";
Je crois que je bloc encore... hier il fonctionnait et là ce matin il se met à re-déconner. Il me dit que le mail est bel et bien parti mais rien n'arrive. Je n'ai plus donc de message d'erreur mais pas d'arrivée de mail...
Avec ce code je n'ai aucune erreur mais le mail n'arrive pas.
Dans le cas ou je change
Tu trouves ça normal ?
Configuration: Windows / Firefox 42.0
$frontiere = '-----=' . md5(uniqid(mt_rand())); $Entrer = "\n"; // Entête du message $tete="From:".$f_Email.$Entrer; $tete.='MIME-Version: 1.0'.$Entrer; $tete.='Content-Type: multipart/mixed; boundary='.$frontiere.$Entrer; $tete.= '--'.$frontiere.$Entrer; // Première pièce jointe $tete.= "Content-type: ".$attach_type1."; name=".$upload_file1.$Entrer; $tete.= "Content-Length:".filesize($upload_file1).$Entrer; $tete.= "Content-transfer-Encoding: BASE64".$Entrer; $tete.= "Content-disposition: attachment; filename=".$upload_file1.$Entrer; $tete.= $encoded_attach1.$Entrer; $tete.= $encoded_attach1.'--'.$frontiere.$Entrer; // Seconde pièce jointe $tete.= "Content-type: ".$attach_type2."; name=".$upload_file2.$Entrer; $tete.= "Content-Length:".filesize($upload_file2).$Entrer; $tete.= "Content-transfer-Encoding: BASE64".$Entrer; $tete.= "Content-disposition: attachment; filename=".$upload_file2.$Entrer; $tete.= $encoded_attach2.'--'.$frontiere.$Entrer; // Corps du message $corps="Nom et Prénoms : ".$f_Nom.$Entrer; $corps.="Je postule pour : ".$list['f_Postule'][$f_Postule].$Entrer; $corps.= $Entrer; $corps.="Téléphone : ".$f_Telephone.$Entrer; $corps.="Adresse Email : ".$f_Email.$Entrer; $corps.="Observations complémentaires : ".$f_Observation; // Décodage pour le UTF-8 $Le_Mail = LE_MAIL; $Le_Titre = utf8_encode($titre); $Le_Corps = utf8_encode(stripslashes($corps)); $La_Tete = $tete; // Envois du mail if(mail($Le_Mail, $Le_Titre, $Le_Corps, $La_Tete))
Avec ce code je n'ai aucune erreur mais le mail n'arrive pas.
Dans le cas ou je change
$La_Tete = $tete;en
$La_Tete = "";Le mail arrive mais bon, sans pièce jointe ni format d'entête et en spam (normal).
Tu trouves ça normal ?
Configuration: Windows / Firefox 42.0
Salut,
Ligne 101/108, tu a un double saut de ligne, ça le gène peut-être ?
Sinon, met en commentaire chaque ligne qui commence par "$tete.="
Et restest en activant les blocs un à un (En faisant un test à chaque fois), tu finira par trouver ce qui cloche.
Ligne 101/108, tu a un double saut de ligne, ça le gène peut-être ?
Sinon, met en commentaire chaque ligne qui commence par "$tete.="
Et restest en activant les blocs un à un (En faisant un test à chaque fois), tu finira par trouver ce qui cloche.
Salut Nhavy,
Oui j'avais testé tout ça mais en vain.
Après j'ai tenter de faire ceci :
Remplacer :
Par:
Et tout est rentré dans l'ordre.
Grand merci en tout cas pour ton aide !
Oui j'avais testé tout ça mais en vain.
Après j'ai tenter de faire ceci :
Remplacer :
$tete.= $encoded_attach2."\n".'--'.$frontiere."\n";
Par:
$tete.= $encoded_attach2.'--'.$frontiere."\n";
Et tout est rentré dans l'ordre.
Grand merci en tout cas pour ton aide !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Les mails avec pièces jointes finissent souvent dans les SPAM, tu a regardé de ce côté là ?
Sinon, à voir si tes pièces jointes ne sont pas trop volumineuse.
Si tu essaye avec une seule pièce jointe ça passe ?
Sinon, à voir si tes pièces jointes ne sont pas trop volumineuse.
Si tu essaye avec une seule pièce jointe ça passe ?
Rien arrive, pas même un seul. La pièce jointe mise en test est un bloc-notes contenant le mot "Bonjour"
essaye ça pour ta première pièce jointe :
Et met la deuxième en commentaire.
$tete.= "Content-Type: ".$attach_type1."; name=\"".$upload_file1."\"".$Entrer; $tete.= "Content-Transfer-Encoding: base64".$Entrer; $tete.= "Content-Disposition: attachment; filename=\"".$upload_file1."\"".$Entrer; $tete.= $Entrer.$encoded_attach1.$Entrer.$Entrer; $tete.= $Entrer.'--'.$frontiere."--".$Entrer;
Et met la deuxième en commentaire.
Là il m'envoie la même erreur...
Warning: mail(): Multiple or malformed newlines found in additional_header in
La solution la plus simple est de passer via PHPMailer (C'est une classe simple qui format le mail à ta place), tu mettra moins de temps à faire la transition qu'a trouver le soucis je pense.
Bonjour Nhay,
Je viens de comprendre le soucis. En fait il n'y avait pas d'erreur dans le dernier code que je t'ai envoyé. Le problème venait de la boite mail elle même... bizarrement.
Si je mettais outlook ca ne fonctionnait pas, si je mettais gmail ca fonctionnait.
J'ai donc essayé un autre compte mail outlook et il a fonctionné et depuis il fonctionne toujours.
Je te remercie pour ton aide et ta patience.
Cordialement.
Je viens de comprendre le soucis. En fait il n'y avait pas d'erreur dans le dernier code que je t'ai envoyé. Le problème venait de la boite mail elle même... bizarrement.
Si je mettais outlook ca ne fonctionnait pas, si je mettais gmail ca fonctionnait.
J'ai donc essayé un autre compte mail outlook et il a fonctionné et depuis il fonctionne toujours.
Je te remercie pour ton aide et ta patience.
Cordialement.
Sinon, la solution la plus pérenne est de passer par une class, genre PHPmailer qui s'occupe de générer un code propre.