Rolf B: form action subject

Beitrag lesen

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.

  • 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.

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

--
sumpsi - posui - obstruxi