Gmail имеет поддержку для того, что registerProtocolHandler() испускает в HTML5.
Пример:
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"
вместо этого. Но для этого требуется, чтобы вы сначала проанализировали URI mailto, чтобы получить hf-значения и исправить их процентное кодирование, чтобы убедиться, что они пригодны для отправки в URI HTTP. Более подробную информацию об этом см. Ниже.
Теперь, что Gmail делает с HTML5, составляющим URI, является процентом-декодированием параметра url для получения URI mailto. Затем он анализирует URI mailto, чтобы получить hfvalues. Затем он использует эти hf-значения для создания URI, как встроенный в папку «Входящие», и перенаправляет вас на него.
Проблема с методом HTML5 Gmail заключается в том, что он не кодирует символы «+» в процентах в значениях hf с «% 2B». Конечным результатом этого является то, что символы «+» в URI mailto (они не являются пробелами в URI mailto) выглядят как пробелы в форме компоновки Gmail.
Чтобы обойти эту ошибку Gmail, вы просто сделать:
var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test".replace(/\+/g, "%2B"));
вместо этого.
Ошибка была сообщена много лет назад, но Gmail отказывается ее исправлять.
Как вы также должны видеть, что для встроенного в UIB скомпилированного URI, если у вас был URI mailto: «mailto:? Subject = 1 + 2», вам необходимо убедиться, что вы выбрали su = 1% 2B2 в составляют URI, а не su = 1 + 2. Последний будет заставлять пространство находиться в поле темы вместо «+». Эта часть не является ошибкой с Gmail. Именно так работает HTTP.
Вы можете увидеть источник my Gmail Compose Extension for Opera (разархивировать), чтобы увидеть, как я делаю так, как HTML5. Это очень просто. Но, однако, он не содержит обходной путь + к% 2B.
Однако вы можете увидеть the newer version of the extension, что я тестирую (просто нужно, чтобы кто-то тестировал опцию, специфичную для домена, в настройках) для более совершенной обработки. Этот использует my custom, generic mailto URI parser для нормализации URI mailto и его hf-значений для обработки случая «+», небезопасных символов и дубликатов hf-значений. Он также предлагает возможность выбрать, хотите ли вы использовать HTML5 для составления URI или нет.
Вы также можете посмотреть на this User JS script for Opera для того, как делать вещи.
Для дубликата вопроса hfvalue, упомянутого ранее, и других материалов для URI mailto, см. my mailto URI spec, который использовался для исследований и обратной связи для RFC6068.
Примечание: Просто потому, что пользователь Gmail имеет расширенные функции редактирования текста включен, это не означает, что Gmail будет принимать HTML-разметку в URI и создания письма рассматривать его как таковой. Все это интерпретируется как текст.
Что вы используете для новых строк при кодировании url? И почему вы не используете стандартную схему «mailto:» URI? ('href =" mailto: [email protected]? subject = SubjectHere ") – Anthony
В основном эта ссылка открывает экран компоновки gmail - я пробовал urlencoding newlines, а также html breaks, но он не работал :(- его для google приложения на основе проекта – Ali
исправляя связь, которая предоставляется в вопросе, так как при условии, ссылка идет на страницу ошибки сервера. Это может помочь другим. https://mail.google.com/?view=cm&fs=1&tf=1&source=mailto&to= КТО% 40COMPANY.COM и су = SUBJECTHERE & куб.см = КТО% 40COMPANY.COM и ОЦК = КТО% 40COMPANY.COM и тело = PREPOPULATEDBODY –