Poradnik

Formularz mailto czy backend formularzy?

Formularz mailto wygląda jak formularz kontaktowy, ale przeglądarka tylko przekazuje tekst do programu pocztowego. Dlaczego wiadomości giną i co w zamian.

Krótka odpowiedź. Formularz z action="mailto:" sam niczego nie wysyła. Przeglądarka tworzy szkic wiadomości i otwiera program pocztowy odwiedzającego. Jeśli program nie jest skonfigurowany albo ktoś nie kliknie „Wyślij”, nic do Ciebie nie dotrze. I żadna ze stron się o tym nie dowie. Link mailto sprawdza się jako przycisk „Napisz do nas”. Prawdziwy formularz kontaktowy wysyłaj do backendu formularzy albo własnego skryptu.

Formgong teamZaktualizowano

Formularz mailto czy backend formularzy?
Formularz mailto czy backend formularzy?

Co naprawdę robi formularz mailto

Zwykły formularz wysyła pola pod adres w sieci. Formularz mailto ma w atrybucie action adres e-mail. Standard HTML opisuje, co wtedy robi przeglądarka. Nigdy nie wysyła wiadomości za Ciebie.

  • Przy method="GET" przeglądarka zamienia pola na temat i nagłówki nowej wiadomości.
  • Przy method="POST" pola trafiają do treści wiadomości. Z enctype="text/plain" da się ją przeczytać. Bez tego tekst jest zakodowany jak w adresie URL.

W obu przypadkach otwiera się program pocztowy ze szkicem. Odwiedzający musi jeszcze kliknąć „Wyślij” w tym programie. Strona nie dostaje odpowiedzi, więc nie wie, czy coś wyszło.

Dlaczego formularz mailto gubi wiadomości

Każdy krok po kliknięciu zależy od urządzenia odwiedzającego. Właśnie tam giną wiadomości:

  • Brak programu pocztowego. Wiele osób czyta pocztę w karcie przeglądarki, np. w Gmailu czy Onecie. Bez domyślnego programu kliknięcie może nic nie zrobić. Albo system zapyta, czym otworzyć link.
  • Nikt nie kliknął „Wyślij”. Szkic się otworzył, a ktoś go zamknął, coś go rozproszyło albo uznał, że formularz już wszystko wysłał.
  • Brak potwierdzenia. Strona nie pokaże „Dziękujemy, mamy Twoją wiadomość”, bo nie zna wyniku.
  • Brak kopii. Nic się nie zapisuje, więc zgubiona wiadomość przepada.
  • Adres na widoku. Twój e-mail jest w kodzie strony, skąd zbierają go boty spamowe.
  • Nieczytelna treść. Bez text/plain przychodzi coś w stylu name=Anna&message=Dzien%20dobry.

Do tego odwiedzający pisze z prywatnej skrzynki. Nie każdy chce ją podawać firmie, której jeszcze nie zna.

Zamień formularz mailto na działający

Pola zostają te same. Zmieniasz dwie rzeczy: action i ukryty klucz. Formularz wysyła wtedy dane do backendu formularzy. Backend zapisuje wiadomość, wysyła Ci e-mail i pokazuje odwiedzającemu stronę z podziękowaniem. Nic nie zależy już od jego programu pocztowego.

Przykład poniżej korzysta z Formgong. Zamień fk_your_access_key na klucz z panelu. Pole _lang ustawia język strony z podziękowaniem, a _subject temat powiadomienia. Ukryte pole botcheck łapie proste boty. Twojego adresu nie ma już w kodzie strony.

HTML
<!-- Było: <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="pl">
  <input type="hidden" name="_subject" value="Nowa wiadomość ze strony">
  <label>Imię <input type="text" name="name" required autocomplete="name"></label>
  <label>E-mail <input type="email" name="email" required autocomplete="email"></label>
  <label>Wiadomość <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">Wyślij</button>
</form>

Inne sposoby odbierania danych z formularza

  • Backend formularzy. Zmieniasz action i gotowe. Tak działają Formgong, Formspree, Web3Forms i inne. Różnice w limitach i funkcjach pokazuje porównanie usług formularzy.
  • Własny skrypt. Plik PHP albo funkcja serverless odbiera formularz i wysyła e-mail. Masz pełną kontrolę, ale dostarczalność poczty i spam też są na Twojej głowie.
  • Gotowy formularz w zewnętrznej usłudze. Google Forms i podobne dają link albo osadzenie. Szybko, ale wygląda jak ich produkt, a nie Twoja strona.

Cały formularz krok po kroku opisujemy w artykule formularz kontaktowy HTML bez backendu. Wszystkie ukryte pola Formgong znajdziesz w dokumentacji HTML.

Sprawdź formularz przed publikacją

Wklej kod formularza do darmowego sprawdzania formularzy. Narzędzie oznacza jako błąd action, który nie jest adresem w sieci, np. mailto:. Sprawdza też nazwy pól, metodę i pole-pułapkę.

Potem wyślij prawdziwą wiadomość testową z opublikowanej strony, z telefonu i z laptopa. Upewnij się, że e-mail dochodzi, a odwiedzający widzi jasną stronę z podziękowaniem.

Pytania i odpowiedzi

Czy formularz mailto wysyła e-mail?

Nie. Przeglądarka tylko otwiera program pocztowy odwiedzającego ze szkicem. Wiadomość wyjdzie dopiero wtedy, gdy program jest skonfigurowany i ktoś kliknie w nim „Wyślij”.

Dlaczego formularz mailto nic nie robi po kliknięciu?

Zwykle na urządzeniu nie ma ustawionego domyślnego programu pocztowego. Wiele osób używa poczty w przeglądarce i wtedy kliknięcie nie ma dokąd trafić.

Czy da się ukryć adres w formularzu mailto?

Nie. Adres musi być w kodzie strony, żeby przeglądarka mogła go użyć, więc widzą go też boty. Backend formularzy usuwa adres z kodu strony.

Czy link mailto szkodzi SEO?

Nie. To zwykły link, który wyszukiwarki pomijają. Problemem są zgubione wiadomości, a nie pozycje w Google.

Źródła i dokumentacja

Oficjalne materiały pomocnicze: HTML Standard: form submission, RFC 6068: The mailto URI scheme, MDN: the form element. Formgong dla HTML, Przechowywanie danych.

Artykuł w formacie Markdown

Oceń ten poradnik

Twoja ocena

Czytamy każdą ocenę. Komentarz pojawi się tutaj dopiero po naszym zatwierdzeniu.

← Wróć do bloga