xpatval Posté 5 Novembre 2004 Posté 5 Novembre 2004 (modifié) Bonjour tt le monde, Suite à un post répondant à une autre question sur le forum html css, l'un d'entre nous, pourvoyeurs de questions/réponses sur le ube, pardon, hub, me proposait une fonction d'envoi de mail html. Bien. Mais deux questions me vous pose-je ( c'est français, ça?): 1- à partir de cela: function mail_html($destinataire, $sujet , $messtxt, $messhtml , $from){.....return mail($destinataire, $sujet, $texte_simple.$texte_html, $entete);} Je suis royalement infoutu (je sais, je suis limité), de récupérer les messages d'erreurs éventuels, dans le script appelant la fonction !! Le script précédent la modif (c-a-d avant l'ajout de l'appel à cette fonction) le faisait très bien, mais je suis complètement paumé avec le return. Et je procédais de la sorte: ini_set("track_errors",1);if(! _AT_mail($to, $subject, $message, $en_tete)) $err_mess = "Erreur lors de l'envoi du mail: <em>". $php_errormsg ."</em>";else $err_mess = "Votre message a été envoyé."; Ma deuxième question concerne l'envoi du mail en lui-même. En effet, lorsque je teste, et donc récupère le mail avec mon client mail, je me retrouve avec un fichier .txt joint, et vide. le code des entêtes est celui-ci: function mail_html($destinataire, $sujet , $messtxt, $messhtml , $from) { $limite = "_parties_".md5 (uniqid (rand())); $entete = "Reply-to: $from\n"; $entete .= "From:$from\n"; $entete .= "Date: ".date("l j F Y, G:i")."\n"; $entete .= "MIME-Version: 1.0\n"; $entete .= "Content-Type: multipart/alternative;\n"; $entete .= " boundary=\"----=$limite\"\n\n"; //Le message en texte simple pour les navigateurs qui //n'acceptent pas le HTML $texte_simple = "This is a multi-part message in MIME format.\n"; $texte_simple .= "Ceci est un message au format MIME.\n"; $texte_simple .= "------=$limite\n"; $texte_simple .= "Content-Type: text/plain; charset=\"US-ASCII\"\n"; $texte_simple .= "Content-Transfer-Encoding: 7bit\n\n"; $texte_simple .= $messtxt; $texte_simple .= "\n\n"; //le message en html original $texte_html = "------=$limite\n"; $texte_html .= "Content-Type: text/html; charset=\"US-ASCII\"\n"; $texte_html .= "Content-Transfer-Encoding: 7bit\n\n"; $texte_html .= $messhtml; $texte_html .= "\n\n\n------=$limite\n"; return mail($destinataire, $sujet, $texte_simple.$texte_html, $entete); } J'ai remplacé le charset US par un charset iso-8859-1. Quelqu'un voit-il d'où cela peut provenir ? merci, xpatval Modifié 5 Novembre 2004 par xpatval
Vincent Posté 5 Novembre 2004 Posté 5 Novembre 2004 le return ci dessous va te retourner un booleen. (nb : remarque le @ qui evite d'envoyer des messages d'erreurs intempestifs a ton visiteur lambda) return _AT_mail($destinataire, $sujet, $texte_simple.$texte_html, $entete); il faut donc a l'appel de ta fonction que tu test le booleen qui t'es retourné du genre : ini_set("track_errors",1);if(! mail_html($to, $subject , $messtxt, $messhtml , $en_tete)) $err_mess = "Erreur lors de l'envoi du mail: <em>". $php_errormsg ."</em>";else $err_mess = "Votre message a été envoyé.";
xpatval Posté 5 Novembre 2004 Auteur Posté 5 Novembre 2004 Suffisait juste de le dire, et hop !! Merci, xpatval
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant