Menu

Ссылка mailto в HTML: тема, текст письма, копия и tel

Как сделать ссылку, которая открывает новое письмо через href="mailto:", заполнить тему, текст, копию и скрытую копию, правильно их закодировать и сделать ссылки для звонка через tel: и sms:.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Как сделать ссылку на почту

Начните href ссылки с mailto: и адреса. Клик по ней открывает в почтовой программе читателя новое письмо на этот адрес.

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

Используйте сам адрес как текст ссылки. Читатель без настроенной почтовой программы (частая ситуация на компьютерах, где почтой пользуются в браузере) все равно сможет его скопировать, а ссылка с текстом только «Напишите нам» оставит его ни с чем.

Тема, текст, копия и скрытая копия

Ссылка mailto может заполнить и другие части письма. Добавьте параметры после ? и соедините их через &, как в строке запроса URL:

ПараметрЧто заполняетПример
subjectТему письма?subject=Order%20question
bodyТекст письма&body=Hi%20there
ccПолучателей копии&cc=sales@example.com
bccПолучателей скрытой копии&bcc=log@example.com

Несколько получателей записывают в части с адресом через запятую: mailto:ana@example.com,bob@example.com.

Значения должны быть закодированы для URL: пробел это %20, перенос строки %0D%0A, & это %26, а ? это %3F. Скрипт в этом примере декодирует каждую ссылку, чтобы было видно, что получит почтовая программа:

Тему Order #123 нужно записать как Order%20%23123: голый # оборвал бы URL на этом месте, и текст письма потерялся бы. Не используйте и + вместо пробела. В ссылке mailto + это буквальный знак плюса, и многие почтовые программы так его и показывают.

Ссылка mailto через JavaScript

Кодировать вручную легко с ошибками. encodeURIComponent сделает это за вас. Заполните поля, и ссылка ниже обновится:

encodeURIComponent превращает & в %26, а перенос строки в %0A; replace делает из переносов строк пару %0D%0A, которую ожидает электронная почта. Часть с адресом оставьте как есть: @ и , там допустимы без кодирования.

Ссылки на телефон через tel: и sms:

tel: создает ссылку для звонка по клику. Пишите в href номер с кодом страны и без пробелов; видимый текст можно оформить как угодно.

  • tel:+442079460958 работает из любой страны. Местный номер вроде tel:02079460958 работает только для звонящих из этой страны.
  • Дефисы допустимы как разделители (tel:+1-555-123-4567); пробелы в формат не входят, поэтому в href их не пишите.
  • sms: открывает приложение сообщений. Текст сообщения через ?body= работает во многих приложениях, но поддержка различается, поэтому не полагайтесь на него.
  • На компьютере tel: открывает приложение для звонков, если оно установлено (например, FaceTime или софтфон), а иначе ничего не делает.

Safari на iPhone сам превращает номера телефонов в обычном тексте в ссылки. Если это что-то ломает, например номер заказа, отключите это через <meta name="format-detection" content="telephone=no">.

Спам и адреса электронной почты

Адрес в ссылке mailto может прочитать любой бот, скачавший страницу. Уловки вроде записи hello [at] example [dot] com или сборки адреса через JavaScript останавливают некоторые простые сборщики, но и ссылкой становится сложнее пользоваться. Контактная форма, о которой рассказывает страница формы в HTML, вообще убирает адрес со страницы. Для большинства сайтов проще хороший спам-фильтр в почтовом ящике.

Избегайте <form action="mailto:...">. Такая форма зависит от почтовой программы читателя, отправляет поля закодированными для URL и трудночитаемыми и не дает вам никакого подтверждения, что что-то отправлено.

Частые ошибки

  • Забытый mailto:. href="hello@example.com" это относительная ссылка на страницу, названную по адресу.
  • Незакодированные пробелы или # в теме или тексте. Кодируйте значения через %20, %23 или encodeURIComponent.
  • + вместо пробелов. Он отображается как знак плюса.
  • Второй ? вместо &. Только первый параметр идет после ?; остальные соединяются через &.
  • «Напишите нам» как единственный текст, так что пользователям веб-почты нечего скопировать.
  • Местные номера в tel:. Указывайте код страны.

Часто задаваемые вопросы

Как сделать ссылку на email в HTML?

Используйте ссылку, у которой href начинается с mailto: и адреса: <a href="mailto:hello@example.com">hello@example.com</a>. Клик по ней открывает новое письмо в почтовой программе читателя по умолчанию.

Как добавить тему письма в ссылку mailto?

Добавьте ее параметром запроса после ?: mailto:hello@example.com?subject=Order%20question. Кодируйте пробелы как %20, а остальные параметры соединяйте через &, например ?subject=Hi&body=Hello.

Как отправить ссылку mailto нескольким получателям?

Разделите адреса запятыми: mailto:ana@example.com,bob@example.com. Для копий используйте параметры cc= и bcc=: mailto:ana@example.com?cc=bob@example.com&bcc=cy@example.com.

Как сделать номер телефона кликабельным в HTML?

Используйте ссылку tel: с номером в международном формате: <a href="tel:+15551234567">+1 555 123 4567</a>. На телефонах она начинает звонок, на компьютере открывает установленное приложение для звонков, если оно есть.

Почему ссылка mailto ничего не делает?

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

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ