Практична інструкція

Форма mailto чи бекенд для форм: що обрати

Форма mailto схожа на форму зворотного зв'язку, але браузер лише передає текст поштовій програмі. Чому губляться заявки і що поставити натомість.

Коротка відповідь. Форма з action="mailto:" сама нічого не надсилає. Браузер створює чернетку листа й відкриває поштову програму відвідувача. Якщо програму не налаштовано або людина не натисне «Надіслати», ви нічого не отримаєте. І ніхто з вас про це не дізнається. Посилання mailto підходить як кнопка «Напишіть нам». Для справжньої форми зворотного зв'язку надсилайте дані на бекенд для форм або на власний серверний скрипт.

Formgong teamОновлено

Форма mailto чи бекенд для форм: що обрати
Форма mailto чи бекенд для форм: що обрати

Що насправді робить форма mailto

Звичайна форма надсилає поля на вебадресу. У формі mailto в атрибуті action стоїть email. Стандарт HTML описує, що з цим робить браузер. Лист за вас він не надсилає ніколи.

  • З method="GET" браузер перетворює поля на тему та заголовки нового листа.
  • З method="POST" браузер кладе поля в текст листа. З enctype="text/plain" текст читабельний. Без нього він закодований, як в адресі сторінки.

В обох випадках браузер відкриває поштову програму з чернеткою. Відвідувач ще має натиснути «Надіслати» вже там. Сторінка не отримує відповіді, тож не знає, чи лист пішов.

Чому форма mailto губить заявки

Кожен крок після кліку залежить від пристрою відвідувача. Саме там і губляться листи:

  • Немає поштової програми. Багато людей читає пошту у вкладці браузера. Якщо програму за замовчуванням не задано, клік може нічого не зробити. Або система спитає, чим відкрити посилання.
  • Ніхто не натиснув «Надіслати». Чернетка відкрилася, а людина її закрила, відволіклася чи подумала, що форма вже все надіслала.
  • Немає підтвердження. Сторінка не може написати «Дякуємо, ми отримали заявку», бо не знає результату.
  • Немає копії. Ніщо не зберігається, тож загублений лист зникає назавжди.
  • Адреса на виду. Ваш email лежить у коді сторінки, звідки його збирають спам-боти.
  • Незручний текст. Без text/plain лист приходить як name=Olena&message=Dobryi%20den.

До того ж відвідувач пише зі своєї особистої скриньки. Не кожен хоче світити її компанії, яку ще не знає.

Замініть форму mailto на робочу

Поля залишаються ті самі. Змінюються дві речі: action і прихований ключ. Тепер форма надсилає дані на бекенд для форм. Він зберігає заявку, надсилає вам лист і показує відвідувачу сторінку подяки. Від поштової програми відвідувача більше нічого не залежить.

У прикладі нижче використано Formgong. Замініть fk_your_access_key на ключ із кабінету. Поле _lang задає мову сторінки подяки, а _subject — тему листа-сповіщення. Приховане поле botcheck ловить простих ботів. Вашої адреси в коді сторінки більше немає.

HTML
<!-- Було: <form action="mailto:you@example.com" method="POST" enctype="text/plain"> -->
<form action="https://formgong.com/submit" method="POST">
  <input type="hidden" name="access_key" value="fk_your_access_key">
  <input type="hidden" name="_lang" value="uk">
  <input type="hidden" name="_subject" value="Нова заявка з сайту">
  <label>Ім'я <input type="text" name="name" required autocomplete="name"></label>
  <label>Email <input type="email" name="email" required autocomplete="email"></label>
  <label>Повідомлення <textarea name="message" required></textarea></label>
  <div aria-hidden="true" style="position:absolute;inset-inline-start:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)">
    <input type="text" name="botcheck" tabindex="-1" autocomplete="off">
  </div>
  <button type="submit">Надіслати</button>
</form>

Інші способи отримувати дані з форми

  • Бекенд для форм. Змінили action — і готово. Так працюють Formgong, Formspree, Web3Forms та інші. Різницю в лімітах і можливостях показує порівняння сервісів форм.
  • Власний скрипт. PHP-файл або серверна функція приймає форму й надсилає лист. Усе під вашим контролем, але доставку листів і захист від спаму теж налаштовуєте ви.
  • Готова форма на чужому сервісі. Google Forms і схожі сервіси дають посилання чи вбудовування. Швидко, але виглядає як їхній продукт, а не ваш сайт.

Повну форму крок за кроком розбираємо в статті HTML-форма зворотного зв'язку без бекенду. Усі приховані поля Formgong описано в документації для HTML.

Перевірте форму перед публікацією

Вставте HTML форми в безкоштовну перевірку форм. Вона позначає як помилку action, що не є вебадресою, наприклад mailto:. Також вона перевіряє назви полів, метод і поле-пастку.

Потім надішліть справжню тестову заявку з опублікованої сторінки, з телефона й з ноутбука. Переконайтеся, що лист приходить, а відвідувач бачить зрозумілу сторінку подяки.

Питання та відповіді

Чи надсилає форма mailto лист?

Ні. Браузер лише відкриває поштову програму відвідувача з чернеткою. Лист піде, тільки якщо програму налаштовано і людина натисне «Надіслати».

Чому форма mailto нічого не робить після кліку?

Найчастіше на пристрої не задано поштову програму за замовчуванням. Багато людей користуються поштою в браузері, і тоді кліку просто нікуди піти.

Чи можна сховати свою адресу у формі mailto?

Ні. Адреса має бути в коді сторінки, щоб браузер міг її використати, а отже її бачать і боти. Бекенд для форм прибирає адресу з коду сторінки.

Чи шкодить посилання mailto SEO?

Ні. Це звичайне посилання, яке пошукові системи ігнорують. Проблема в загублених заявках, а не в позиціях у пошуку.

Джерела та документація

Офіційні джерела для цієї інструкції: HTML Standard: form submission, RFC 6068: The mailto URI scheme, MDN: the form element. Formgong для HTML, де зберігаються дані.

Завантажити текст статті (Markdown)

Оцініть цю статтю

Ваша оцінка

Ми читаємо кожну оцінку. Коментар з'явиться тут лише після нашого схвалення.

← До блогу