Эффективный максимальный mailto: длина тела

Максимальная длина текста в разделе &body ссылки mailto:. По словам одного из моих коллег, W3C публикует ограничение как 256 (хотя у меня нет ссылки, чтобы подтвердить это).

Мы встраиваем mailto: ссылки как в электронное письмо, так и на веб-страницу и успешно использовали более 256 символов. Однако после определенного момента почтовые клиенты и браузеры начинают отключаться и отказываются открывать ссылку.

Я хотел бы знать фактическую максимальную длину, разрешенную для следующего:

Почтовые клиенты:

  • Outlook (2003, 2007, 2010)
  • Eudora (7.1 и / или новая версия)
  • Thunderbird (последняя версия)

Браузеры:

  • Firefox (3+)
  • IE (6, 7, 8)
  • браузер iPhone

Любые номера, которые вы можете предоставить, будут с благодарностью приняты.

4 ответа

Решение

Стандарт не определяет максимальную длину, оставляя реализацию до браузеров и почтовых клиентов (см. IETF RFC 2368).

Продукты Microsoft имеют установленные ограничения:

Другие браузеры, вероятно, будут работать до размеров, превышающих разумный объем электронной почты. У iPhone нет задокументированного ограничения, но он работает с объемом до 1 МБ текста.

Современные браузеры, которые поддерживают URL-адреса данных (все, кроме IE<9) должны быть в порядке.

Для браузеров с консолями JS простой тест:

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;}}

(13 для длины mailto:?body=.)

На Firefox 32.0.3 это производит 2008 (длина тела 1995). На Thunderbird 31.2.0 все 1 995 символов попадают в тело нового электронного письма.

Некоторые говорят, что это в основном зависит от настроек ОС, но в Windows, по крайней мере, я не смог найти ни одной записи реестра, связанной с mailto с числом около 2000.

По состоянию на 2022 год кажется, что Outlook (во всяком случае, 2007 год) принимает длинную строку query_string не менее 8000 символов с использованием mailto в Firefox. Однако, используя браузер Google Chrome, Chrome потерпел неудачу примерно в 2000 году. Наименьшим общим знаменателем, похоже, является Chrome. Очень жаль, так как это был запрос на протяжении более десяти лет.

Я только что провел эксперимент из Wolfram Mathematica в Microsoft Outlook. Он работает для строк длиной 31888 или меньше. Вот код, который я использовал для этого эксперимента:

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

и печатает 31888 как общую длину строки. Если увеличить 31433 на единицу, он перестает работать.

Другие вопросы по тегам