Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > HTML / DHTML / XHTML
HTML / DHTML / XHTML Forum sur la programmation HTML / DHTML/ XHTML et la validation W3C. Cours (X)HTML, FAQ (X)HTML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2010, 19h24   #1
Membre confirmé
 
Homme Clément
Développeur informatique
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 277
Points : 277
Par défaut Mailto accents et encodage

Bonjour

Je souhaiterais savoir s'il est possible d'écrire des liens de type mailto avec des accents à l'intérieur du corps du message.

J'ai essayé diverses possibilités :
Directement l'accent sur ma page, encodée en UTF-8:
Code :
1
2
 
<a href="mailto:john@test.com?body=terminée">Mail</a>
Avec la valeur unicode du "é" qui est E9
Code :
1
2
 
<a href="mailto:john@test.com?body=termin%E9e">Mail</a>
Avec le "é" encodé en UTF-8, sur deux octets, qui vaut C3A9.
Code :
1
2
 
<a href="mailto:john@test.com?body=termin%C3A9e">Mail</a>
Avec le "é" avec son htmlspecialchar &eacute (j'ai écrit le "&" "&amp;", cela ma semblé judicieux, enfin pas si sûr).
Code :
1
2
 
<a href="mailto:john@test.com?body=termin&amp;eacute;e">Mail</a>
Mais en général, cela ne fonctionne pas, ou pas sur tous les postes. Le client de messagerie (Outlook, Thunderbird) n'interprête pas toujours de la bonne façon le body.

Je me demande même si cela est possible, au vu de la rfc 2368.
Citation:
The user agent interpreting a mailto URL SHOULD choose not to create
a message if any of the headers are considered dangerous; it may also
choose to create a message with only a subset of the headers given in
the URL. Only the Subject, Keywords, and Body headers are believed
to be both safe and useful.

The creator of a mailto URL cannot expect the resolver of a URL to
understand more than the "subject" and "body" headers. Clients that
resolve mailto URLs into mail messages should be able to correctly
create RFC 822-compliant mail messages using the "subject" and "body"
headers.
Car j'avais pensé à mettre des header du genre "Content-Type" ou "MIME-version", mais cette RFC n'en fait pas mention, donc je me demande si cela est vraiment légal...

Quelqu'un pourrait-il m'éclairer sur la question ?
Climoo est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 11h17   #2
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 045
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 045
Points : 6 956
Points : 6 956
Pas loin .

Normalement c'est %C3%A9, chaque octet de l'utf-8 échappé.

Mais ça dépend aussi de certains paramètres que je n'ai jamais bien pu comprendre. Essaie si ça te règle ton problème avec la plupart des combinaisons navigateur + programme mail. Si non, bah désolé .
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/12/2010, 13h01   #3
Membre confirmé
 
Homme Clément
Développeur informatique
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 277
Points : 277
Merci de ta réponse thelvin !

En fait, j'avais essayé avec "%C3%A9" , mais j'avais simplement mal recopié sur mon post...

Ca fonctionne sur mon ordi par exemple, mais pas sur celui de mon voisin...
Climoo est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 11h58   #4
Membre confirmé
 
Homme Clément
Développeur informatique
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 277
Points : 277
En réponse à moi-même, ca éclaircira peut être certains points, et cela sera peut être utile à d'autres :
Dans Outlook, il existe une option qui permet de faire varier le comportement du protocole mailto :

Sous Outlook 2007
outils->option->Format du courrier->options internationales-> cocher "Activer la prise en charge de l'UTF-8 pour le protocole mailto:"

Sous Outlook 2010
fichier->options->options avancées->options internationales: cocher "Activer la prise en charge de UTF-8 pour le protocole mailto:"

Par défaut, lorsque l'option n'est pas cochée, mon outlook utilise l'encodage iso 8859-1 (ou latin-1, l'encodage par défaut français). Probablement que cela change en fonction de certaines variables locales...
Donc dans ce cas, un %E9 est bien interprété en "é" dans le body.

Lorsque l'option est cochée, le %E9 n'affiche aucun caractère dans mon body. En revanche un %C3%A9, qui correspond aux deux octets qui encodent le caractère "é" (E9) en UTF-8, affiche bien le "é".

Remarque supplémentaire : dans la barre d'adresse du navigateur, si vous tapez :
Code :
mailto:bidule@test.com?body=gagnée
avec l'option décochée de Outlook, cela peut vous réserver des surprises.
Sur Firefox, le "é" est affiché "é" dans le message. Comme si le "é" avait été encodé au passage en UTF-8.
Sur IE8, le "é" est affiché correctement dans le message, car laissé au format ISO.

Moralité : Il ne me semble pas possible d'écrire des accents dans le body, que l'on saura correctement interprétés par tous les clients de messagerie car:
  • Les clients de messageries peuvent être configurés différemment (cf case à cocher de Outlook) concernant l'encodage des caractères.
  • Le protocole mailto ne fait pas mention d'un moyen pour spécifier l'encodage du body dans son protocole, qui pourrait forcer le client de messagerie à utiliser le bon encodage.

Cela vous parait-il exact ?
Climoo est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 14h39   #5
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 045
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 045
Points : 6 956
Points : 6 956
D'abord merci pour cette analyse que je n'ai jamais faite, parce qu'Outlook ça me broute, et que je ne l'ai pas de toute façon.

Citation:
Envoyé par Climoo Voir le message
Sur Firefox, le "é" est affiché "é" dans le message. Comme si le "é" avait été encodé au passage en UTF-8.
C'est le cas, c'est officiellement ce que les navigateurs sont censés faire. Sauf mention contraire, les caractères non-ASCII des URLs sont censés être transcrits en UTF-8.
Et il n'y a pas de mention contraire.

Citation:
Envoyé par Climoo Voir le message
Sur IE8, le "é" est affiché correctement dans le message, car laissé au format ISO.
Techniquement il n'est pas laissé au format ISO mais mis au format ISO.
Ce que tu tapes dans la barre d'adresse n'a pas de format d'encodage, puisque c'est un truc tapé au clavier et affiché à l'écran.
(Non, ce n'est pas important, en effet.)

Citation:
Moralité : Il ne me semble pas possible d'écrire des accents dans le body, que l'on saura correctement interprétés par tous les clients de messagerie car:
  • Les clients de messageries peuvent être configurés différemment (cf case à cocher de Outlook) concernant l'encodage des caractères.
  • Le protocole mailto ne fait pas mention d'un moyen pour spécifier l'encodage du body dans son protocole, qui pourrait forcer le client de messagerie à utiliser le bon encodage.

Cela vous parait-il exact ?
Oui.
(Enfin, mailto dit qu'il se base sur le format d'URL, et il en découle que c'est du UTF-8. Mais bon, pour ces vieux trucs, la logique URL donc UTF-8 est souvent oubliée.)

Mais il y a d'autres trucs à tenter si on est acharné, comme ajouter &content-type=text%2Fplain;charset%3DUTF-8 (il paraît que ça changeait quelque chose à une lointaine époque.)

Ou alors la notation =?UTF-8?Q?gagn=C3=A9e?=
correctement échappé en URL puis en HTML.

Il y en a sûrement d'autres.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 09h53   #6
Membre confirmé
 
Homme Clément
Développeur informatique
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 277
Points : 277
Merci encore pour ta réponse thelvin...
J'ai essayé ces petites astuces.
Malheureusement, ça n'a pas été très concluant
Code :
mailto:john@test.com?body=?UTF-8?Q?gagn=C3=A9e?=
M'affiche "?UTF-8?Q?gagn=C3=A9e?=", avec ou sans l'option de Outlook cochée.
Code :
mailto:john@test.com?body=%3FUTF-8%3FQ%3Fgagn%3DC3%3DA9e%3F%3D
Me fait la même chose
Code :
mailto:john@test.com?body=gagn%C3%A9e&content-type=text%2Fplain;charset%3DUTF-8
A exactement le même comportement que s'il n'y avait pas les entêtes (elles semblent tout simplement ignorées par Outlook).

Donc bon, je crois que je vais m'arrêter là, je ne pense pas trouver de solutions miracle. Et en cherchant sur le net, les avis vont généralement dans ce sens.

Reste à savoir si je vais obliger le texte à ne pas comporter d'accents, ou si je vais laisser tomber le mailto au profit d'une gestion d'un envoi de mail côté serveur.

En tout cas, tout cela reste assez instructif...
Climoo est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h24.


 
 
 
 
Partenaires

Hébergement Web