2014-11-27 3 views
6

Я разрабатываю веб-сайт.Что делает `mailto:` делать, когда нет почтового клиента?

Что делает mailto: open, если нет почтового клиента (например, Outlook, Thunderbird и т. Д.)? Он работает на моем компьютере, который имеет Outlook, но что, если вы хотите, чтобы mailto: открыли, скажем, gmail.com?

Что мне нужно для того, чтобы положить в заявление mailto:, чтобы это произошло?

+0

Насколько я знаю MAILTO открывает только те клиенты, в гостевой ОС. Если их нет, это не сработает. Есть некоторые (хром) плагины, чтобы сделать gmail «почтовым клиентом по умолчанию». Я исправляю это, создавая (php) с моего сайта и отправляя его таким образом. – Triplus

+0

Я не думаю, что это сработает. Я предлагаю иметь форму вместо Ajax. – www139

ответ

9

Как веб-разработчик вы не имеете никакого контроля над программным обеспечением, которое пользователь выбирает для открытия своего электронного письма, поскольку он обрабатывается настройками веб-браузера пользователя или операционной системой. Если у пользователя нет программы электронной почты, установленной на их машине, и никакой операции, определенной для ссылок «mailto» в их браузере, ничего не произойдет.

0

Что происходит, полностью зависит от клиента. ОС определяет обработчики протоколов для протоколов, таких как mailto: или tel: и т. Д.

Для доступа к реестру клиента (в случае системы Windows) вам понадобится доступ к приложению обработки для вашего обработчика протокола.

Для Outlook 2013 в качестве назначенного обработчика, то по структуре реестра выглядит следующим образом:

[HKEY_CLASSES_ROOT\mailto] 
@="URL:mailto" 
"EditFlags"=hex:02,00,00,00 
"URL Protocol"="" 

[HKEY_CLASSES_ROOT\mailto\DefaultIcon] 
@="C:\\PROGRA~2\\MICROS~1\\Office15\\OUTLOOK.EXE,-9403" 

[HKEY_CLASSES_ROOT\mailto\shell] 
@="open" 

[HKEY_CLASSES_ROOT\mailto\shell\open] 

[HKEY_CLASSES_ROOT\mailto\shell\open\command] 
@="\"C:\\PROGRA~2\\MICROS~1\\Office15\\OUTLOOK.EXE\" -c IPM.Note /mailto \"%1\"" 

с соответствующей структурой под HKCU.

1

Я считаю, вы можете использовать это. https://mail.google.com/mail/?view=cm&fs=1&[email protected] У этого есть свои недостатки, в которых пользователь должен быть уже подписан в gmail. Надеюсь это поможет!

+1

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – AdamMc331

+0

Помните об этом. Спасибо. –

+0

Предполагая, что пользователь вошел в систему (или даже использует) учетную запись gmail, я бы сказал, еще хуже, если предположить, что у них установлен собственный почтовый клиент. – Matt

0

URI-схема mailto не определяет, что происходит - она ​​просто инструктирует браузер, который вы используете, чтобы сделать то, что было настроено для отправки электронной почты (см. the IETF proposed standard for more info). Поэтому вам придется проконсультироваться с самим браузером, чтобы узнать, что он делает, если клиент электронной почты не настроен.

В соответствии с документацией и моим личным опытом я не вижу никакого способа вручную установить действие: возможно, с некоторыми браузерами с нестандартным синтаксисом, но это маловероятно, так как это откроется огромная потенциальная проблема безопасности, позволяя выполнять произвольную команду щелчком (например, загрузку вируса или что-то в этом роде).

1

следующее решение работает для меня:

(function($)) { 
    $('a[href^=mailto]').each(function() { 
    var href = $(this).attr('href'); 
    $(this).click(function() { 
     var t; 
     var self = $(this); 

     $(window).blur(function() { 
     // The browser apparently responded, so stop the timeout. 
     clearTimeout(t); 
     }); 

     t = setTimeout(function() { 
     // The browser did not respond after 500ms, so open an alternative URL. 
     document.location.href = '...'; 
     }, 500); 
    }); 
    }); 
})(jQuery); 

Для получения дополнительной информации см: https://www.uncinc.nl/articles/dealing-with-mailto-links-if-no-mail-client-is-available

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