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

API standards et tierces Java Discussion :

[JavaMail] Accents et mails en html


Sujet :

API standards et tierces Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 1
    Points
    1
    Par défaut [JavaMail] Accents et mails en html
    Bonjour,

    Après avoir parcouru les faq et le forum, je n'ai pas trouvé réponse à mon problème.

    J'envoie des mails en HTML grâce à l'api JavaMail.

    Je spécifie le charset dans l'entête html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    J'indique que mon mail est en html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MimeMessage message = new MimeMessage(mySession);
    message.setContent(corps, "text/html");
    Malgré cela, les messages que recoivent mes destinataires sont dépourvus d'accents, lesquels sont remplacée par des caractères abscons du genre é...

    Qu'ai-je oublié de préciser pour que les accents s'affichent ainisi?

    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 572
    Points
    1 572
    Par défaut
    bonjour,

    en html les accents s'ecrivent differements le é je crois que c'est &leate et ainsi de suite il faut voir la syntaxe des caracteres spéciaux mais ca c'est un probleme HTML et pas de l'api JavaMail

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je suis au courant que les accents et autres caractères spéciaux possédent des codes html, genre &eacute; et consorts.

    A mon avis le préoblème n'est pas là, car en regardant la source du mail que mes destinataires recoivent, les accents sont bien présents (genre é et non sont code html) et non pas le é affiché en lieu et place de l'accent.

    De plus, même si le caractère spécial de remplacement d'un accent n'est pas utilisé en html, un navigateur récent et francais saura l'afficher parfaitement (même si effectivement, cela n'est pas conseillé).

    Une autre piste?

  4. #4
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Bonjour,

    Quel est le client utilisé par tes clients pour lire ces courriels?

    S'ils utilisent un client avec interface WEB (page HTML, exemple: HORDE), tu ne peux rien y faire.

    C'est de la responsabilité de l'application client de détecter que les courriels utilisent le charset ISO-8859-1 et que l'application utilise un autre charset (UTF-8).

    En effet une page HTML ne peut utiliser qu'un charset.

    Horde détecte ce problème et il me propose d'ouvrir une autre fenêtre où je pourrais lire mon courriel avec le charset correct.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Les clients mails utilisés sont Outlook 2003, Outlook Express et Mail (MacOS 10.4).

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je viens de remarqué qu'en changeant le codage du mail dans Outlook, en le passant de ISO à UTF-8, les accents s'affichent correctement.

    C'est donc l'encodage du mail qui est mauvais.

    J'ai donc changé l'entête html en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8 />
    sans succès hélas.

    Après quelques autres recherches, il semblerait qu'il faille utiliser l'objet MimeUtility de l'api Javamail pour arriver à mes fins.

    Je n'ai malheureusement pas compris comment utiliser cet objet.

    Quelqu'un pourrait-il m'aider sur cette piste (si c'est la bonne...)?

  7. #7
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Cela aurait été avec plaisir mais j'ai le même problème, que j'ai résolu en supprimant les accents dans le mail que j'envois...

  8. #8
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Citation Envoyé par alxdabrazil
    Je viens de remarqué qu'en changeant le codage du mail dans Outlook, en le passant de ISO à UTF-8, les accents s'affichent correctement.

    C'est donc l'encodage du mail qui est mauvais.

    J'ai donc changé l'entête html en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8 />
    sans succès hélas.

    Après quelques autres recherches, il semblerait qu'il faille utiliser l'objet MimeUtility de l'api Javamail pour arriver à mes fins.

    Je n'ai malheureusement pas compris comment utiliser cet objet.

    Quelqu'un pourrait-il m'aider sur cette piste (si c'est la bonne...)?
    Je pense que tu es sur la voie. Tu as une variable corps. De quelle classe est-elle? Je suppose String.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message.setContent(new String(corps.getBytes(), "iso-8859-1"), "text/html");
    En effet si tu déclares le charset étant "iso-8859-1", tu dois fournier aussi le message dans ce charset. En Java, les strings utilisent le charset UTF-8 en interne.

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci Jovo, tu m'as indiqué la marche à suivre à un détail près.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    message.setContent(new String(corps.getBytes(), "UTF-8"), "text/html");

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 867
    Points : 22 927
    Points
    22 927
    Billets dans le blog
    53
    Par défaut
    En Java, les strings utilisent le charset UTF-8 en interne.
    Non elles sont en UTF-16 puis que les char Java font 2 octets.
    Voir http://java.sun.com/j2se/1.5.0/docs/...ng/String.html

    A String represents a string in the UTF-16 format in which supplementary characters are represented by surrogate pairs
    Il faut donc... les convertir en UTF-8 pour les envoyer dans un message UTF-8 comme l'a trouvé alxdabrazil. Idem pour iso-8859-1.

Discussions similaires

  1. [JavaMail] Mis en place d'un mail en HTML
    Par khokho dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 02/04/2007, 12h10
  2. [Mail] Problème mail en html
    Par Vinzius dans le forum Langage
    Réponses: 6
    Dernier message: 10/09/2005, 23h51
  3. [JavaMail]Recuperation de mail sans Pop
    Par romano21 dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 19/08/2005, 11h13
  4. Fonction mail avec HTML et images
    Par nico33307 dans le forum Modules
    Réponses: 1
    Dernier message: 06/07/2005, 00h25
  5. [mail] page html pour mail
    Par Mr.White dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 14/03/2005, 17h55

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