Aller au contenu

Mail et récup d'erreur


xpatval

Sujets conseillés

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é par xpatval
Lien vers le commentaire
Partager sur d’autres sites

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é.";

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...