form action subject
Companerosmatt
- formulare
- html
Hallo zusammen,
dies ist mein erster Beitrag und ich hoffe sehr, dass ihr mir in diesem Fall weiterhelfen könnt. Und zwar möchte ich, dass die Betreffzeile mit Vor und Nachnamen bestückt wird:
<form action="mailto:x.y@test.de?subject=Test" method="post" enctype="text/plain">
Diese Informationen sollten optimalerweise im Betreff stehen (Vorname+ Nachname):
<!--Vor und Nachname-->
<tr>
<td>Vorname: </td>
<td><input type="text" name="Vorname" required></td>
<td>Nachname: </td>
<td><input type="text" name="Nachname" required></td>
</tr>
Folgendes habe ich herausgefunden - bastel ich
<form action="mailto:x.y@test.de?subject="Vorname method="post" enctype="text/plain">
um, spuckt er mir zumindest schon einmal den richtigen Vornamen im Betreff aus, wo das "&body" herkommt, kann ich mir allerdings nicht erklären...
Habt ihr einen heißen Tipp für mich?
Gruß Mattes &body=Vorname=s
@@Companerosmatt
Folgendes habe ich herausgefunden - bastel ich
Womit bastelst du da? JavaScript? PHP?
<form action="mailto:x.y@test.de?subject="Vorname method="post" enctype="text/plain">
um, spuckt er mir zumindest schon einmal den richtigen Vornamen im Betreff aus
Das kann ich mir bei dem gezeigten Code nicht vorstellen.
Eins kann ich dir aber schon mit Sicherheit sagen: Deinen Eingabefeldern fehlt die Beschriftung.
Du musste deinen Eingabefeldern IDs verpassen und und in die td
s noch label
s mit for
-Attributen mit den entsprechenden IDs einbauen:
<!--Vor und Nachname-->
<tr>
<td><label for="Vorname">Vorname:</label></td>
<td><input id="Vorname" name="Vorname" required></td>
<td><label for="Nachname">Nachname:</label></td>
<td><input id="Nachname" name="Nachname" required></td>
</tr>
(type="text"
ist default; kann weggelassen werden.)
Noch besser allerdings: Du verzichtest ganz auf die Tabelle. Die Beschriftung sollte immer über dem Eingabefeld stehen, nicht daneben.
🖖 Живіть довго і процвітайте
Hallo,
Noch besser allerdings: Du verzichtest ganz auf die Tabelle. Die Beschriftung sollte immer über dem Eingabefeld stehen, nicht daneben.
du hast noch vergessen darauf hinzuweisen, dass man bitte nicht die Domain der Stiftung Warentest als Platzhalter verwenden sollte.
Einen schönen Tag noch
Martin
@@Der Martin
du hast noch vergessen darauf hinzuweisen, dass man bitte nicht die Domain der Stiftung Warentest als Platzhalter verwenden sollte.
In. Der. Tat.
Aufgefallen war’s mir. Ich hatte es tatsächlich vergessen zu erwähnen.
Aber du wiederum hättest auch gleich auf RFC 2606 verlinken können.
🖖 Живіть довго і процвітайте
Hallo Companerosmatt,
abgesehen von den Grundsatzüberlegungen Gunnars, die mit deinem Problem nicht direkt zu tun haben, ist dies hier
<form action="mailto:x.y@test.de?subject="Vorname method="post" enctype="text/plain">
inkorrekt. Vorname
steht außerhalb der Anführungszeichen und kann vom Browser nicht verarbeitet werden.
Das Senden eines Formulars an ein Mailprogramm mittels mailto: ist aus mehreren Gründen problematisch.
Zumindest bei mir in Chrome ist es darüber hinaus so, dass der Browser bei einer mailto URL keinen echten POST durchführt. Es steht zwar "POST" im Netzwerktrace der Entwicklerwerkzeugen, aber die Header-Informationen sehen anders aus UND er schreibt die Feldinhalte als body=... in die URL - sendet also keinen Formular-Inhalt gemäß der POST Definition. Das ist die Herkunft deines body. Es sieht so aus, als müsse mailto immer als GET gesendet werden, um zu funktionieren.
Wenn's einen Trick gibt, die Kodierung des Space als "+" zu vermeiden, wird es natürlich einfacher. Aber ich habe die üblichen enctypes am Form durchprobiert, und es kommt immer das +.
Rolf
Hi,
Das Senden eines Formulars an ein Mailprogramm mittels mailto: ist aus mehreren Gründen problematisch.
- Du musst die Empfänger-URL verschleiern, sonst wird sie von Spammern abgegriffen
- Leerstellen im Betreff oder Inhalt werden vom Browser als + codiert und nicht als %20 - wodurch sie im Mailprogramm als + erscheinen. Zumindest ist das bei der Kombi Google Chrome und Microsoft Outlook so. Um das zu verhindern, müsstest Du die Feldinhalte von Hand codieren (mit Javascript, encodeURI Funktion - die erzeugt immer %20 für Spaces) und das action Attribut des Forms damit belegen. Und es muss ein GET Request sein, kein POST. Du kannst zwar auch ein Form an das Mailprogramm posten, aber dann hast Du wieder das "+ für Space" Problem.
cu,
Andreas a/k/a MudGuard