50 votes

Longueur maximale effective des mailto : body

Il existe une longueur maximale pour le texte de la section &body d'un lien mailto :. Selon l'un de mes collègues, le W3C publie la limite à 256 (je n'ai pas de lien pour étayer cette affirmation, cependant).

Nous intégrons des liens mailto : à la fois dans un e-mail et dans une page Web et nous avons réussi à utiliser plus de 256 caractères. Cependant, au-delà d'un certain point, les clients de messagerie et les navigateurs commencent à s'affoler et à refuser d'ouvrir le lien.

Je souhaiterais connaître les longueurs maximales réelles autorisées pour les éléments suivants :

Clients de messagerie :

  • Outlook (2003, 2007, 2010)
  • Eudora (7.1, et/ou la dernière version en date)
  • Thunderbird (dernière version)

Navigateurs :

  • Firefox (3+)
  • IE (6, 7, 8)
  • Navigateur pour iPhone

Tous les chiffres que vous pouvez fournir seront reçus avec gratitude.

0 votes

35voto

jlev Points 169

La norme ne définit pas de longueur maximale, laissant la mise en œuvre aux navigateurs et aux clients de messagerie (voir IETF RFC 2368).

Les produits Microsoft ont des limites bien définies :

Les autres navigateurs sont susceptibles de fonctionner jusqu'à des longueurs supérieures à celles d'un corps d'email raisonnable. L'iPhone n'a pas de limite documentée, mais fonctionne avec un maximum de 1 Mo de texte.

Les navigateurs modernes qui prennent en charge les urls de données (tout sauf IE<9) devraient convenir.

4 votes

Lien vers le test de longueur du mailto de l'iPhone : benzado.com/blog/post/28/iphone-openurl-limit

1 votes

Merci. C'est dommage qu'il n'y ait pas plus d'informations sur les longueurs de mailto, mais ce que vous m'avez donné est mieux que le rien que j'avais avant :)

0 votes

Notez que la dernière version de "Microsoft Outlook Express" date de 2001 et qu'elle a été rebaptisée Windows Mail/Windows Live Mail. Je ne suis pas sûr que ces versions présentent les mêmes limitations.

16voto

Kev Points 5046

Pour les navigateurs avec des consoles JS, un test facile :

for (var i=2014; i>1600; i--) {var good=1; try {location.href='mailto:?body='+'a'.repeat(i)} catch (e) {good=0;} if (good==1) {console.log(i+13);break;}}

(Le 13 correspond à la longueur de mailto:?body= .)

Sous Firefox 32.0.3, cela donne 2008 (longueur du corps 1995). Sous Thunderbird 31.2.0, les 1 995 caractères se retrouvent dans le corps du nouveau message.

Certains disent que cela dépend principalement du système d'exploitation. mais sur Windows, au moins, je n'ai pas trouvé d'entrée de registre liée à mailto avec un nombre proche de 2 000.

0 votes

Ce script n'a pas fonctionné pour moi. Dans Chrome et Firefox, il imprime simplement ce que la valeur de départ de i est, plus 13. Même si le nombre est si grand que la page elle-même manque de mémoire.

0 votes

@JHS, j'ai vérifié votre résultat sous Linux avec la dernière version de FF. Je suppose qu'une mise à jour a cassé ma méthode de test, c'est à dire essayer de définir window.location à une URL trop longue n'entraîne pas d'erreur comme au moment de la publication.

0 votes

J'étais sur Ubuntu 14.04 et je l'ai essayé dans Firefox et Chrome, puis sur une VM de Windows 10 avec IE et Edge / Spartan. J'ai essayé de trouver la limite en mettant de très grands nombres dans votre script original (en commençant petit et en travaillant vers le haut). Chrome a manqué de mémoire et a montré l'écran "page morte", tandis que Firefox a continué à travailler jusqu'à ce que le processus cesse de répondre. Dans la plupart des cas, les limites strictes ne semblent être appliquées que par certains clients de messagerie, tels qu'Outlook. Je ne doute pas que votre script fonctionnait au moment où vous l'avez écrit. Les navigateurs avaient probablement des limites de longueur d'URL.

2voto

gdelfino Points 6527

Je viens de faire une expérience de Wolfram Mathematica à Microsoft Outlook. Cela fonctionne pour des longueurs de chaîne de 31888 ou moins. Voici le code que j'ai utilisé pour cette expérience :

Table[ToString@RandomInteger[{0, 9}], 31433] //
     Partition[#, UpTo[80]] & //
    Map[StringJoin] //
   StringRiffle[#, "\n"] & //
  "mailto:xxxxxxx.xxxxxxx@xx.com?subject=Testing out mailto!&body="<> # & //
 Echo[#, "Total String Length", StringLength] & //
SystemOpen

et imprime 31888 comme longueur totale de la chaîne. Si vous augmentez le 31433 d'une unité, cela ne fonctionne plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X