The Mailto Form
forms and protocols 1996 partlyA form that posted straight to an email address, with no CGI script behind it.
In 2026: Partly, and less dead than its reputation. Mailto links themselves are fine, and the HTML standard still defines what a mailto form does: GET puts the fields in the mailto URL, POST with enctype text/plain hands them over as the message body, and the browser opens the visitor's mail client with the data filled in. Nothing sends itself, though: with no mail client configured it silently does nothing, and the visitor still presses Send from their own address. That unreliability, plus Netscape and IE encoding the body differently, is why every free host offered a formmail CGI instead.
Where it came from: HTML 3.2 allowed any URL as a form action. FormMail.pl by Matt Wright, Matt's Script Archive, 1995. Wikipedia ↗
<form action="mailto:you@example.com" method="post" enctype="text/plain">
Name: <input type="text" name="name"><br>
Comment: <textarea name="comment" rows="4" cols="30"></textarea><br>
<input type="submit" value="Send"> <input type="reset" value="Clear">
</form>
<!-- The GET variant. Submitting REPLACES the query string, so the subject
here is lost and msg arrives as a header most mail clients ignore. -->
<form action="mailto:you@example.com?subject=From my web page" method="get">
<input type="text" name="msg"><input type="submit" value="Send">
</form>
<!-- What everybody actually used -->
<form action="/cgi-bin/formmail.pl" method="post">
<input type="hidden" name="recipient" value="you@example.com">
<input type="hidden" name="subject" value="Web form">
<input type="hidden" name="redirect" value="http://example.com/thanks.html">
<input type="text" name="realname"><input type="submit" value="Send">
</form>