IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Encoder un sujet de courriel


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut [Mail] Encoder un sujet de courriel
    Bonjour,
    j'essaie désepérément d'encoder correctement un sujet de courriel pour qu'il soit décodable.
    Avec l'exemple suivant,

    Supprimable : pour test 12 novembre 2007 14h40 8° html & images intégrées + pj
    thunderbird n'interprète pas correctement
    =?UTF-8?Q?Supprimable_:_pour_test_12_novembre_2007_14h40_8=C2=B0_html_&_images_int=?= �
    J'utilisais la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function header_quoted_printable_encode_xof($string, $encoding='UTF-8') {  
        $string = str_replace(" ", "_", trim($string)) ;
        $string = str_replace("?", "=3F", str_replace("=\r\n", "", imap_8bit($string))) ;
        $string = chunk_split($string, 73);
        $string = substr($string, 0, strlen($string)-2);
        $string = str_replace("\r\n", "?= =?".$encoding."?Q?", $string) ;
        return '=?'.$encoding.'?Q?'.$string.'?=';
    }
    trouvé dans les remarques ici http://fr3.php.net/manual/fr/function.imap-8bit.php
    car a priori imap_8bit n'est pas fonctionnel pour les grandes chaines. Mais en fait cette fonction non plus !
    J'ai fait d'autres essais ici : http://test03.christophe-charron.org...ect_encode.php
    mais ils ne sont pas plus concluants !! Egalement ici, le code du script http://test03.christophe-charron.org/public/php/2007_11_13/2007_11_12_subject_encode.txt

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 696
    Par défaut
    Essaye de mettre le sujet directement en UTF-8, la plupart des clients e-mail reconnaissent cet encodage.

  3. #3
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Tu veux dire comme cela ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    header('Content-type: text/html; charset=utf-8');
    $toto='Supprimable : pour test 12 novembre 2007 14h40 8° html & images intégrées  + pj';
    echo ('1-> ');
    echo ($toto);
    echo ('<br>');
    echo (' 2-> ');
    $titi=toutsimple($toto);
    echo $titi;
    echo ('<br>');
    echo (' 3-> ');
    echo iconv_mime_decode($titi);;
    echo ('<br>');
    function toutsimple($string, $encoding='UTF-8') {  
        return '=?'.$encoding.'?Q?'.$string.'?=';
    }
    ?>
    Non ce n'est pas bon, a priori ou bien quelle est la manip pour le décoder car ça donne cela : http://test03.christophe-charron.org...ect_encode.php

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 696
    Par défaut
    je parlais d'envoyer l'e-mail comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $destinataire = $envoyeur = '...@...';
     
    $sujet = "Supprimable : pour test 12 novembre 2007 14h40 8° html & images intégrées + pj";
     
    $message  = '';
    $message .= "Ligne 1 caractères spéciaux € ß Œ β\n";
    $message .= "Ligne 2\n";
     
    $entetes = "From: $envoyeur\nContent-type: text/plain; charset=UTF-8\n";
     
    mail($destinataire, $sujet, $message, $entetes, "-f$envoyeur");
    mais en testant j'ai remarqué que ça ne fonctionne pas comme il faut avec par exemple ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sujet = "Test d'un sujet avec des caractères spéciaux € ß Œ β";
    j'ai l'impression qu'avec ma méthode les caractère UTF-8 sont encodé en ISO-8859-1 par Thunderbird et donc il ne veut pas pour le 2e sujet parce que "Œ" et "β" n'existe pas en ISO-8859-1*

    edit : les balises "CODE" n'aiment pas mes caractères spéciaux , il faut remplacer "&#..." par "β"

  5. #5
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Je n'ai pas de souci en envoyant le courriel en UTF-8 que ce soit texte ou html.
    Parce que l'information d'encodage est indiquée dans le charset. Mais cela ne vaut pas pour le sujet, c'est pour cela que je tente de l'encoder à part.
    Et d'ailleurs cela fonctionne avec un message court, le problème vient de l'obligation de couper le sujet en morceaux de 76 caractères ...

    voir ici le sujet court qui fonctionne (5 et 6)

    http://test03.christophe-charron.org..._encode_01.php

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 696
    Par défaut
    Citation Envoyé par Christophe Charron Voir le message
    Et d'ailleurs cela fonctionne avec un message court, le problème vient de l'obligation de couper le sujet en morceaux de 76 caractères ...
    pourquoi ça ? j'ai testé l'envoi d'un e-mail avec un sujet de plus de 100 caractères sans problème

    Citation Envoyé par Christophe Charron Voir le message
    Parce que l'information d'encodage est indiquée dans le charset. Mais cela ne vaut pas pour le sujet, c'est pour cela que je tente de l'encoder à part.
    exactement, c'est pour ça que mon exemple ne fonctionnais pas
    en fait il faut déclarer l'encodage avant le sujet comme dans les pages HTML où l'encodage est avant la balises "title"

    et donc le code suivant envoie un e-mail qui affiche le sujet correctement avec Thunderbird :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $destinataire = $envoyeur = '...@...';
     
    $sujet = 'Test d\'un sujet avec des caractères spéciaux € ß Œ β Supprimable : pour test 12 novembre 2007 14h40 8° html & images intégrées + pj';
     
    $message  = '';
    $message .= "Ligne 1 caractères spéciaux € ß Œ β\n";
    $message .= "Ligne 2\n";
     
    $entetes  = '';
    $entetes .= "Content-type: text/plain; charset=UTF-8\n";
    $entetes .= "Subject: $sujet\n";
    $entetes .= "From: $envoyeur\n";
     
    echo mail($destinataire, '', $message, $entetes, "-f$envoyeur");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OL-2010] Déplacer des mails selon le sujet
    Par arthrax dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 30/07/2014, 11h45
  2. Envoi de mail : Problème accent sujet.
    Par Cibou dans le forum PL/SQL
    Réponses: 2
    Dernier message: 25/11/2009, 22h18
  3. [Mail] Problème fonction mail() pas de sujet ni corps!
    Par webrider dans le forum Langage
    Réponses: 3
    Dernier message: 28/06/2006, 17h04
  4. Réponses: 4
    Dernier message: 27/03/2006, 16h06
  5. [MX]mail to et sujet
    Par yaya31 dans le forum Flash
    Réponses: 2
    Dernier message: 20/01/2004, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo