Gmail поддерживает то, что в HTML5 registerProtocolHandler () испускает.
Пример:
var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test");
Это то, что Gmail ожидает, что вы будете использовать. Измените начало для доменного специфического URI составления конечно.
Тем не менее, он загружает составную форму сам по себе (не интегрирован со страницей входящих). Итак, если вы хотите, чтобы составная форма была интегрирована в папку входящих сообщений, вам необходимо загрузить:
"https://mail.google.com/mail/?compose=1&view=cm&fs=1&to=1&su=2&body=3&cc=4&bcc=5"
вместо этого. Но это требует, чтобы вы сначала проанализировали mailto URI, чтобы получить значения hf и исправить их процентное кодирование, чтобы убедиться, что они подходят для отправки в HTTP URI. Подробнее об этом см. Ниже.
Теперь, то, что Gmail делает с HTML5-составным URI, это процентное декодирование параметра url, чтобы получить mailto URI. Затем он анализирует почтовый URI, чтобы получить значения hf. Затем он использует эти значения hf для создания URI, подобного интегрированному во входящие, и перенаправляет вас на него.
Проблема метода HTML5 в Gmail заключается в том, что он не кодирует символы «+» в процентах до hfvalues до «% 2B». Конечным результатом этого является то, что символы «+» в почтовом URI (они не являются пробелами в почтовом URI) появляются как пробелы в форме создания Gmail.
Чтобы обойти ошибку Gmail, просто выполните:
var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test".replace(/\+/g, "%2B"));
вместо.
Об ошибке сообщили несколько лет назад, но Gmail отказывается ее исправить.
Как вы также должны видеть, для встроенного URI составного почтового ящика, если у вас был почтовый URI "mailto:? Subject = 1 + 2", вам нужно убедиться, что вы выдавали su = 1% 2B2 в compose URI, а не su = 1 + 2. Последнее приведет к тому, что вместо поля «+» в поле темы появится пробел. Эта часть не является ошибкой в Gmail. Так работает HTTP.
Вы можете увидеть источник моего расширения Gmail Compose для Opera (распаковать его), чтобы увидеть, как я работаю в HTML5. Это очень просто Но он не содержит обходного пути + к% 2B.
Тем не менее, вы можете увидеть более новую версию расширения , которое я тестирую (просто нужен кто-то, чтобы проверить специфичную для домена опцию в настройках) для более сложной обработки. В этом примере используется мой собственный универсальный синтаксический анализатор mailto URI , чтобы нормализовать URI mailto и его hfvalues для обработки регистра "+", небезопасных символов и дублирования hfvalues. Он также предлагает возможность выбрать, хотите ли вы использовать URI HTML5 или нет.
Вы также можете взглянуть на этот пользовательский JS-скрипт для Opera , чтобы узнать, как это сделать.
О проблеме дублирования hfvalue, упомянутой ранее, и других материалах mailto URI см. my mailto URI spec , который использовался для исследования и обратной связи для RFC6068 .
Примечание. Если у пользователя Gmail включено редактирование расширенного текста, это не означает, что Gmail будет принимать HTML-разметку в составном URI и обрабатывать ее как таковую. Это все интерпретируется как текст.