2010-04-06 2 views
9

Привет ребята я узнал, что для того, чтобы открыть экран GMAIL создания сообщения вы должны войти в систему и откройте следующую ссылку:автозаполнения GMAIL сочинить экран с HTML текст

https://mail.google.com/a/domain/?view=cm&fs=1&tf=1&source=mailto&to=WHOEVER%40COMPANY.COM&su=SUBJECTHERE&cc=WHOEVER%40COMPANY.COM&bcc=WHOEVER%40COMPANY.COM&body=PREPOPULATEDBODY

Замена переменных заполняет соответствующие места в форме сочинения. Однако, если я хочу ввести в тело многострочный текст или разрыв строки, он просто не работает, даже если я его urlencode. Есть идеи?

+0

Что вы используете для новых строк при кодировании url? И почему вы не используете стандартную схему «mailto:» URI? ('href =" mailto: [email protected]? subject = SubjectHere ") – Anthony

+0

В основном эта ссылка открывает экран компоновки gmail - я пробовал urlencoding newlines, а также html breaks, но он не работал :(- его для google приложения на основе проекта – Ali

+0

исправляя связь, которая предоставляется в вопросе, так как при условии, ссылка идет на страницу ошибки сервера. Это может помочь другим. https://mail.google.com/?view=cm&fs=1&tf=1&source=mailto&to= КТО% 40COMPANY.COM и су = SUBJECTHERE & куб.см = КТО% 40COMPANY.COM и ОЦК = КТО% 40COMPANY.COM и тело = PREPOPULATEDBODY –

ответ

11

Убедитесь, что ваш метод UrlEncode действительно переводит символы новой строки в «% 0a». Вот пример электронной почты тела 2-линии:

https://mail.google.com/mail/?view=cm&ui=2&tf=0&fs=1&to=WHOEVER%40COMPANY.COM&su=SUBJECTHERE&body=LINE1%0aLINE2

+2

Спасибо, что решил, что это здорово, но теперь у меня есть еще одна проблема со слишком большим текстом - http://stackoverflow.com/questions/2590467/prefilling-large-volumes-of-body-text-in-gmail-compose-getting -a -request-uri-too – Ali

+1

Compose url работает очень здорово :). Благодарю. Есть ли способ открыть почтовое окно, как если бы его ответ или переадресация? Чтобы пользователи могли напрямую перенаправлять или отвечать на электронную почту. –

+0

@ Kartik найти решение для этого? –

2

Я использовал стандарт Javascript encodeURIComponent() для кодирования многострочного тела. Это сработало.

Кроме тех, кто хочет предварительно заполнить общий Gmail, а не приложение домена конкретной учетной записи, используйте этот URL вместо:

https://mail.google.com/?view=cm&fs=1&tf=1& ....

8

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 и создания письма рассматривать его как таковой. Все это интерпретируется как текст.

+0

Хорошее объяснение. Жаль, что это не может быть ретроактивно принято в качестве ответа. – Palpatim

+0

Знаете ли вы, можно ли объединить [email protected] с этими URL-адресами, чтобы выбрать другую учетную запись GMail? – oodavid

+0

@oodavid Я не знаю *, но я не предполагаю, что это сделано с помощью файлов cookie. – Shadow2531

1

В настоящее время (февраль 2014), для предварительного заполнения экрана составляет с к и предметным областям, использование:

https://mail.google.com/mail/?&v=b&cs=wh&[email protected]&subject=subject%20goes%20here 

Примечание: cs=wh имеет важное значение, так как Compose гиперссылка использует cs=b, которые не заполняется автоматически.

+0

Это работает для меня. – 2015-01-22 15:19:18

0

Другим ограничением является то, что GET запросы ограничены определенным количеством символов, так пытается использовать MAILTO + GET Params метод не будет работать для больших кусков контента. Кто-нибудь нашел другой способ, чтобы увеличить содержимое в новом окне Compose через какой-то веб-запрос?

Из того, что я могу сказать, это будет сложно, так как mailto на самом деле является действительным действием браузера?

0

Спасибо за этот отзыв. Одна вещь, которая не была указана в других ответах, заключается в том, что если вы вошли в Gmail с несколькими учетными записями, такими как личная учетная запись и профессиональная с Google Apps, используя https://mail.google.com/a/domain.com/ вместо https://mail.google.com/mail/, вы можете указать, какой почтовый ящик использовать для отправка сообщение. В противном случае Gmail загружает только зарегистрированную учетную запись.

Смежные вопросы