Rechercher :
Accueil » Look & Feel » Courriels Connexion

Question Pourquoi mes mails apparaissent sans accents et avec la mise en forme
Votre Commande & agrave; bien & eacute;t& eacute; enregistr& eacute;e...??
Réponse Les caractères du courriel sont codés en html et le message est affiché en texte brut.

deux solutions (voire 3 pour des versions de php récentes) pour résoudre le problème

1- Envoyer les mails en html
En règlant la boutique dans l'admin : configuration->E-Mail Options->Utiliser l'html pour les e-mails-> mettre sur "true"
Cette solution simple à l'inconvénient de laisser l'affichage avec les caractères codés pour ceux qui n'acceptent pas l'html dans leur logiciel de courrier

2- Coder les mails sans html
en recherchant tous les textes utilisés dans les mails et en remplaçant les caractères html par leur équivalent ANSI (Attention, sur Mac, respecter le codage windows exemple È pour le é -& eacute;-)
Certains textes peuvent se situer en base de données (Comme par exemple les états de livraison), on peut soit les recréer par l'admin, ils seront en ANSI, soit les modifier avec phpmyadmin (dans la table orders_status pour l'exemple)
Cette solution peut présenter des défauts d'affichage sur les pages web utilisant ces textes avec certains navigateurs

3- La solution proposée par Etrelec
pour des les versions de PHP 4 spérieures ou égales à 4.3.0, la fonction html_entity_decode() transforme toutes les expressions du style "à" en caractères normaux.
modifier comme suit la fonction tep_mail() dans les fichiers \includes\functions\general.php et \admin\includes\functions\general.php:

  function tep_mail(...) {
    if (SEND_EMAILS != 'true') return false;

    // Instantiate a new mail object
    $message = new email(array('X-Mailer: osCommerce'));

    // Build the text version
    $text = html_entity_decode(strip_tags($email_text));
    if (EMAIL_USE_HTML == 'true') {
      $message->add_html($email_text, $text);
    } else {
      $message->add_text($text);
    }

    // Send message
    $message->build_message();
    $message->send(...);
  }


Pour les problèmes de caractères \n non interprétés, voir cette solution
Auteur : xaglo / Etrelec Mise à jour le 02/12/2006

Retour


Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0