mailto: ссылки и веб-почта - PullRequest
13 голосов
/ 28 мая 2009

Есть ли способ реализовать ссылку mailto:, которая работает с клиентами веб-почты?

Редактировать - поэтому традиционная ссылка mailto (как я подозревал) не будет работать. Кто-нибудь видел что-то похожее на те кнопки rss, которые вы видите на самых популярных сайтах?

Ответы [ 10 ]

19 голосов
/ 28 мая 2009

Ссылки обрабатываются браузером пользователя. GMail имеет клиентскую установку (GMail Notifier), которая позволяет вам указать, что вы хотите, чтобы GMail обрабатывал все ссылки mailto.

Но у веб-страницы нет возможности указать, что ее почтовая ссылка должна обрабатываться приложением веб-почты (даже если это возможно, как вы узнаете, какое из них?).

5 голосов
/ 03 января 2013

Создайте текстовый файл с именем MailtoWebMail.reg со следующим содержимым ...

Редактор реестра Windows, версия 5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ MAILTO \ Shell \ открытый \ команды]

@ = "\" (BrowserExecutable) \ "(Параметры)"

где (BrowserExecutable) заменяется полным путем к вашему браузеру (например, C: \ Program Files \ Internet Explorer \ iexplore.exe) и (Параметры) заменяется соответствующей строкой для почтовой службы, как описано ниже ...

GMail «http://mail.google.com/mail/?view=cm&fs=1&to=%1"

Hotmail «http://hotmail.msn.com/cgi-bin/compose?To=%1&mailto=1"

Yahoo Mail «http://compose.mail.yahoo.com/?To=%1"

Netscape Mail «http://webmail.netscape.com/compose.adp?mailto=%1"

Mail.com «http://mail01.mail.com/scripts/mail/Outblaze.mail?composeto=%1&compose=1"

Opera Web Mail «http://mymail.operamail.com/scripts/mail/Outblaze.mail?compose=1&did=1&a=1&to=%1"

Примечание: после строки [HKEY_LOCAL_MACHINE] не должно быть пустой строки

MikeB

5 голосов
/ 28 мая 2009

Это действительно большая проблема веб-клиента, она уже доступна для Firefox:

http://starkravingfinkle.org/blog/2008/04/firefox-3-web-protocol-handlers/

но, в конечном счете, пользователь сам решает, как его браузер обрабатывает ссылки на почту.

2 голосов
/ 28 мая 2009

Я просто мозговой штурм здесь. Возможно, вы сможете присоединить обработчик Javascript к ссылке, которая спрашивает пользователя, хочет ли он / она войти в учетную запись веб-почты (вместе со списком поставщиков). Если у вас есть правильные URL-адреса для провайдеров веб-почты, вы сможете вызывать их на основании выбора пользователя. Если пользователь ответит «нет», верните true из обработчика и, по-видимому, ссылка будет работать нормально.

См., Например, http://toric.blogspot.com/2005/07/gmail-compose-link.html и http://blog.monstuff.com/archives/000238.html

1 голос
/ 01 июня 2009

Вот 2 примера Opera UserJS, которые вы можете просмотреть, и пример того, как вы можете сделать это на обычных страницах. (Очевидно, что специфичные для UserJS функции не будут работать на обычной странице, но вы можете использовать обычные события.)

Этот метод ловит щелчки левой кнопкой мыши на ссылках mailto и открывает их, например, в Gmail. Он также может обрабатывать формы.

http://shadow2531.com/opera/userjs/BeforeMailtoURL.js

Этот перехватывает все действия mailto, имеет более общий синтаксический анализатор (который поддерживает любое имя hname, а не только to, cc, bcc, subject и body) и имеет лучший синтаксис строки формата:

http://shadow2531.com/opera/userjs/BeforeMailtoURL.zip

По сути, вы должны найти способ перехватить действия mailto link. Вы можете сделать это с помощью прослушивателей событий click для ссылок и отправлять прослушиватели в формах (если вы действительно хотите поддерживать формы). (Проще использовать прослушиватель событий щелчка во всем окне и просто отфильтровать его, чтобы найти действия mailto. Таким образом, вы ловите ссылки mailto, которые динамически добавляются в произвольное время.)

Или вы можете просто пройти по странице и обработать все ссылки mailto.

Но если вы хотите перехватить действия mailto в поле адреса, через window.open или document.location и т. Д., Вам понадобится что-то вроде register5tocolHandler в HTML5 или что-то вроде поддержки Opera в webmailprovider.ini. Вы можете использовать registerProtocolHandler в Firefox, но по умолчанию он ограничен доменом, на котором вы его установили.

Таким образом, в основном, вы либо конвертируете ссылки mailto в http (s) webmail, создаете URI заранее, либо во время вызова действия mailto. Последний работает намного лучше.

Преобразование ссылки mailto в URI создания веб-почты включает в себя несколько вещей. Во-первых, вам нужно знать, какие переменные строки запроса принимает веб-почта. Затем вам нужно проанализировать mailto URI, чтобы разделить его на части, которые вы хотите. Затем вам необходимо декодировать и перекодировать (нормализовать) эти части. Затем вам нужно объединить несколько вхождений значений h вместе. И вам нужно обрабатывать вещи без учета регистра, проверять и избегать небезопасных символов,% HH и т. Д.

Для анализа вы можете выполнить быстрое и грязное регулярное выражение, но вы получите лучшие результаты с полным анализатором mailto URI и нормализующими функциями.

Итак, если вы просто хотите обработать щелчок левой кнопкой мыши по ссылкам, вы можете сделать это кросс-браузерно. Более того, вы должны использовать любые хуки, которые дает вам конкретный браузер.

0 голосов
/ 07 апреля 2016

Кто-нибудь видел числа , указывающие, какой процент пользователей веб-почты настроил свои системы с помощью плагинов и т. Д. Для правильной отправки mailto: ссылок в их браузер / систему веб-почты, а не в настольное приложение? Это кажется критическим при принятии решения о том, использовать ли mailto: ссылки на сайте или контактную форму, но у меня возникают проблемы с поиском цифр для принятия решения.

0 голосов
/ 03 января 2013

Да, и дважды щелкните MailtoWebMail.reg, чтобы вставить команду в свой реестр.

MikeB

0 голосов
/ 26 октября 2011

Вид старой темы, но никто еще не ответил на нее, так что вот так.

Как сказал выше Блеш, хотя и нет способа заставить "mailto:" перейти в Gmail, есть еще один способ скинуть эту кошку, которая отлично работает во многих ситуациях. Просто измените URL. Удалите префикс "mailto:" и вставьте "https://mail.google.com/mail/?view=cm&fs=1&tf=1&to=".

Кажется, это работает как очарование, независимо от того, входит ли пользователь через Службы Google. Если пользователь не вошел в систему, он пройдет этот шаг, а затем Gmail все равно отправит новое сообщение. Единственный недостаток, который я заметил, заключается в том, что если (когда?) Google решит изменить схему закладок, возможно, потребуется немного доработать.

Возможно, имеет смысл выполнить это преобразование до или после того, как URL-адрес находится в DOM, в зависимости от вашей ситуации.

0 голосов
/ 13 октября 2009

Если вы используете учетную запись электронной почты Служб Google (размещенная электронная почта), Gmail Notifier работать не будет. Вы можете использовать букмарклет, чтобы изменить все ваши mailto: ссылки на ссылки, которые указывают на вашу веб-почту.

Вот букмарклет, который я написал, чтобы сделать это, он выделит все фиксированные ссылки красным цветом.

javascript:for(var i=0;i<document.links.length;i++){var a=document.links[i];if(a.href.indexOf('mailto:')==0){a.href='http://mail.google.com/a/sample.com/mail?extsrc=mailto&url='+a.href;a.style.backgroundColor='red';a.style.color='white'}};return true;

Просто убедитесь, что изменили http://mail.google.com/a/sample.com на тот адрес, который вам нужен.

Полагаю, это будет работать с рядом других почтовых клиентов, если вы просто измените эту ссылку.

0 голосов
/ 28 мая 2009

Гипотетически, предполагая, что клиент веб-почты передает аргументы через процесс аутентификации (или пользователь уже аутентифицирован), я не понимаю, почему это так невозможно. Это не может быть сделано простым mailto: способом, но можно было бы предоставить выбор ссылок на популярные службы веб-почты и использовать Javascript для перехвата кликов по ссылкам mailto: так, чтобы пользователю был представлен раскрывающийся список. список возможных служб веб-почты (или их локальный почтовый клиент). Ссылки будут содержать адрес To: / Subject:, но сформированы в той структуре, которая требуется службе веб-почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...