A voir également:
- Fonction mail php et caractères accentués
- Fonction mail php et caractères accentués ✓ - Forum - PHP
- Fonction mail php et caractères accentués ✓ - Forum - PHP
- Fonction mail php ne fonctionne pas ✓ - Forum - PHP
- Fonction mail() ne fonctionne pas correctement (free.fr) - Forum - PHP
- Pb json_encode (php) et caractères accentués ✓ - Forum - PHP
14 réponses
Utilisateur anonyme
Verdict ! sur Outlook2002 et webmail Yahoo, c'est parfait !!!
C'est donc bien mon Outlook2007 qui @?!#@?§!
Désolé de t'avoir fait perdre autant de temps, et je te remercie pour ta patience et ton aide précieuse.
Je n'ai plus qu'à farfouiller dans les paramètres de la messagerie
C'est donc bien mon Outlook2007 qui @?!#@?§!
Désolé de t'avoir fait perdre autant de temps, et je te remercie pour ta patience et ton aide précieuse.
Je n'ai plus qu'à farfouiller dans les paramètres de la messagerie
Harricote
- Messages postés
- 417
- Date d'inscription
- mercredi 21 janvier 2009
- Statut
- Membre
- Dernière intervention
- 30 janvier 2011
Salut !
essaye ceci :
essaye ceci :
<?php if(isset($_POST['envoyer'])) { $nom = $_POST['nom']; $email_expediteur = $_POST['email']; $message = $_POST['message']; $email_destinataire = "xxxxxx"; $subject = "Vous avez un nouveau message"; $headers = "From:".$nom." <".$email_expediteur."><br/>"; $headers .= "Reply-To:".$email_expediteur"<br/><br/>"; $body = $message."<br/>"; echo "<div class='message'>Votre message a été envoyé ! Merci</div>"; mail($email_destinataire, $subject, $body, $headers); } ?>
Utilisateur anonyme
Bonjour et merci Haricotte,
Apparement la modif est uniquement de changer les /n en <br/ > ?
Là c'est pire, car je ne reçois plus de message !!
Quelqu'un peut m'aider ?
Merci
Apparement la modif est uniquement de changer les /n en <br/ > ?
Là c'est pire, car je ne reçois plus de message !!
Quelqu'un peut m'aider ?
Merci
le père
Bonjour
surtout pas de balises html dans des entêtes de courier, c'est absurde. Il fait laisser les \n. Normalement d'après la doc PHP c'est même \r\n
Pour tes problèmes d'accents, si tu écris en UTF8, il suffit de le préciser dans les entêtes :
$headers = "From: $nom <$email_expediteur> \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain;\r\n";
$headers .= "\tformat=flowed;\r\n";
$headers .= "\tcharset="utf-8";\r\n";
$headers .= "\treply-type=original\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
$headers .= "Reply-To: $email_expediteur"; // pas de \r\n à la fin PHP s'en charge
surtout pas de balises html dans des entêtes de courier, c'est absurde. Il fait laisser les \n. Normalement d'après la doc PHP c'est même \r\n
Pour tes problèmes d'accents, si tu écris en UTF8, il suffit de le préciser dans les entêtes :
$headers = "From: $nom <$email_expediteur> \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain;\r\n";
$headers .= "\tformat=flowed;\r\n";
$headers .= "\tcharset="utf-8";\r\n";
$headers .= "\treply-type=original\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
$headers .= "Reply-To: $email_expediteur"; // pas de \r\n à la fin PHP s'en charge
Utilisateur anonyme
Bonjour et merci Le Pere pour ton message
Il y avait un pb de string à la ligne "utf-8", j'ai changé les " par des '
Je reçois les informations des headers dans le corps du message !?!
Voici ce que je reçois (j'ai effacé les infos ID... par sécurité) :
Content-Type: text/plain;
format=flowed;
charset='utf-8';
reply-type=original
Content-Transfer-Encoding: 8bit
Reply-To: example@example.com
Message-Id: <............................>
Date: Wed, 3 Jun 2009 11:57:21 +0200 (CEST)
X-Ovh-Tracer-Id: ................................
X-Ovh-Remote: ..................... (.............)
X-Ovh-Local: ..................... (.............)
X-Spam-Check: DONE|H 0.5/N
message
&é\'èçà ù <------ là c'est mon message avec les caractères accentués !!!
Merci
Il y avait un pb de string à la ligne "utf-8", j'ai changé les " par des '
Je reçois les informations des headers dans le corps du message !?!
Voici ce que je reçois (j'ai effacé les infos ID... par sécurité) :
Content-Type: text/plain;
format=flowed;
charset='utf-8';
reply-type=original
Content-Transfer-Encoding: 8bit
Reply-To: example@example.com
Message-Id: <............................>
Date: Wed, 3 Jun 2009 11:57:21 +0200 (CEST)
X-Ovh-Tracer-Id: ................................
X-Ovh-Remote: ..................... (.............)
X-Ovh-Local: ..................... (.............)
X-Spam-Check: DONE|H 0.5/N
message
&é\'èçà ù <------ là c'est mon message avec les caractères accentués !!!
Merci
le père
Après essai, " et ' ne font pas de différence chez moi, bien que le standard dise " (enfin, c'est ce que je crois lire)
Par contre il semblerait que certains agents SMTP préfèrent le \n seul entre les headers (là encore malgré la RFC), réessaye avec de \n au lieu de \r\n.
Par contre il semblerait que certains agents SMTP préfèrent le \n seul entre les headers (là encore malgré la RFC), réessaye avec de \n au lieu de \r\n.
le père
Autre essai :
le 'utf8' donne un affichage correct sur mon webmail (yahoo) mais pas sur outlook express ( é au lieu de é )
alors que "utf8" donne le bon affichage dans les 2 cas. donc les doubles-quotes sont bien préférables
le 'utf8' donne un affichage correct sur mon webmail (yahoo) mais pas sur outlook express ( é au lieu de é )
alors que "utf8" donne le bon affichage dans les 2 cas. donc les doubles-quotes sont bien préférables
Utilisateur anonyme
Merci pour tes essais !!
euh oui effectivement avec les ', " et \" on s'y perd ;-)
Donc avec ceci, ça marche (ça ne marchait pas avec les \r\n) :
$headers = "From: $nom <$email_expediteur>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/plain;\n";
$headers .= "\tformat=flowed;\n";
$headers .= "\tcharset=\"utf-8\";\n";
$headers .= "\treply-type=original\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Reply-To: $email_expediteur"; // pas de \r\n à la fin PHP s'en charge
Mais.... oui il y a un mais, maintenant j'ai des caractères accentués comme cela : ����
Pour info je suis sur Outlook (pro), c'est peut-être différent de Outlook Express ?
euh oui effectivement avec les ', " et \" on s'y perd ;-)
Donc avec ceci, ça marche (ça ne marchait pas avec les \r\n) :
$headers = "From: $nom <$email_expediteur>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/plain;\n";
$headers .= "\tformat=flowed;\n";
$headers .= "\tcharset=\"utf-8\";\n";
$headers .= "\treply-type=original\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Reply-To: $email_expediteur"; // pas de \r\n à la fin PHP s'en charge
Mais.... oui il y a un mais, maintenant j'ai des caractères accentués comme cela : ����
Pour info je suis sur Outlook (pro), c'est peut-être différent de Outlook Express ?
le père
Ça n'a pas de raison d'être différent entre Outlook express et Outlook. Enfin, je n'en vois pas.
Tu es sûr que tu envoies bien encore de l'UTF8 ?
Quand tu regardes ton message dans Outlook, clique sur Affichage - Codage (si c'est comme outlook express). Que vois-tu ?
Tu es sûr que tu envoies bien encore de l'UTF8 ?
Quand tu regardes ton message dans Outlook, clique sur Affichage - Codage (si c'est comme outlook express). Que vois-tu ?
Utilisateur anonyme
J'ai vérifié comme tu me l'as demandé (j'ai pas le même menu avec la version 2007) :
Le message est bien reçu en codage utf8 (et les anciens étaient en codage alphabet occidental Windows).
Dans l'option du message, j'ai la possibilité de changer l'encodage, si je repasse par occidental et que je reviens sur utf8, il me change les ? par mes caractères accentués). Bizarre ??
Donc l'utf8 passe bien, cela doit venir du client messagerie ? Peut-être un paramètrage par défaut à changer qq part ?
Le message est bien reçu en codage utf8 (et les anciens étaient en codage alphabet occidental Windows).
Dans l'option du message, j'ai la possibilité de changer l'encodage, si je repasse par occidental et que je reviens sur utf8, il me change les ? par mes caractères accentués). Bizarre ??
Donc l'utf8 passe bien, cela doit venir du client messagerie ? Peut-être un paramètrage par défaut à changer qq part ?
le père
Je viens de faire l'essai avec Outlook et chez moi ça marche. Peux-tu faire un essai en remplaçant ta variable $body par un petit texte avec un accent , genre
mail($email_destinataire, $subject, "été", $headers);
Au passage, je viens de remarquer que tu ajoutes un <br/> à la fin du $body, c'est inutile car le message que tu envoies est en texte simple, pas en HTML
mail($email_destinataire, $subject, "été", $headers);
Au passage, je viens de remarquer que tu ajoutes un <br/> à la fin du $body, c'est inutile car le message que tu envoies est en texte simple, pas en HTML