Что делает " mailto:", когда нет почтового клиента?

Я разрабатываю веб-сайт.

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

что мне нужно положить в mailto: заявление для этого?

5 ответов


Как веб-разработчик вы не имеете никакого контроля над программным обеспечением, которое пользователь выбирает для открытия своей электронной почты, так как она обрабатывается настройками веб-браузера этого пользователя или ОС. Если на компьютере пользователя не установлена программа электронной почты и не определена операция для ссылок "mailto" в браузере, ничего не произойдет.


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

(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


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


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

вам понадобится доступ к реестру клиента (в случае системы 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.


на mailto схема URI не решает, что происходит-она просто инструктирует браузер, который вы используете, чтобы делать все, что он был настроен для отправки электронной почты (см. IETF предложил стандарт для получения дополнительной информации). Поэтому вам придется проконсультироваться с самим браузером, чтобы узнать, что он делает, если не настроен почтовый клиент.

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