PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mailto-Formular - Escaping abschalten


keldorian
2012-04-09, 21:02:24
Hallo Leute,

ich habe ein Kontaktformular geschrieben, dass ich per "mailto:" an eine bestimmte E-Mail-Adresse versende. Ein Anwender soll mittels Firefox das Formular abschicken. Es öffnet sich Mozilla Thunderbird, um die E-Mail mit den vorbelegten Datenfeldern versenden zu können. Leider escaped Firefox die Daten, wenn es Sie versendet. Aus "Hallo Welt" wird also "Hallo+Welt" in Thunderbird.

Wie kann ich das Escapen umgehen mittels HTML, CSS oder JavaScript? Serverseitige Scriptsprachen stehen nicht zur Verfügung und Fremdanbieter sind keine Option.

Anbei noch der Formularcode:



<form action="mailto:info@beispiel.de">
<table>

<tr>
<td><strong>Betreff: </strong></td>
<td><input type="text" name="subject"></input></td>
</tr>

<tr>
<td colspan="2"><strong>Nachricht: </strong></td>
</tr>

<tr>
<td colspan="2"><textarea maxcols="30" cols="30" rows="10" name="body"></textarea></td>
</tr>

<tr>
<td colspan="2"><input type="submit" value="Absenden"></input></td>
</tr>


</table>
</form>


Gruß
keldorian

keldorian
2012-04-09, 22:08:20
So, ich habe mal weitergemacht und ein kleines JavaScript-Skript geschrieben. Das Problem ist ganz schön tricky. Man sieht gut an den unteren Eingabezeilen, wenn ich das Formular absende werden vorher alle Plus-Zeichen, Escape-Zeichen dekodiert, dennoch kommt beim Mail-Programm das falsche an. Offenbar erfolgt das Escaping von Firefox noch nach dem onSubmit(). Ich wüsste jetzt nicht, wo ich mit JavaScript hier noch ansetzen könnte.

Hat jemand ne Idee?


<html>
<head>
<script type="text/javascript">

function decode_input(str) {
return unescape(str.replace(/\+/g, " "));
}

function decode_form () {
var decoded_subject = decode_input(document.forms["contact"].sub1.value);
var decoded_body = decode_input(document.forms["contact"].bod1.value);
document.forms["contact"].subject.value = decoded_subject;
document.forms["contact"].body.value = decoded_body;
}

</script>
</head>
<body>

<form name="contact" onSubmit="javascript:decode_form()" action="mailto:info@beispiel.de">
<table>

<tr>
<td><strong>Betreff: </strong></td>
<td><input type="text" name="sub1"></input></td>
</tr>

<tr>
<td colspan="2"><strong>Nachricht: </strong></td>
</tr>

<tr>
<td colspan="2"><textarea maxcols="30" cols="30" rows="10" name="bod1"></textarea></td>
</tr>

<tr>
<td colspan="2"><input type="submit" value="Absenden" /></td>
</tr>


</table>

<input type="text" name="subject" />
<input type="text" name="body" />

</form>
</td>


</body>
</html>

RattuS
2012-04-09, 22:49:25
Konntest du schon ausschließen, dass nicht das Mail-Programm daran schuld ist? Wenn ich dein Formular (ohne JS) mit Google Mail verknüpfe, wird nichts escaped und das Ergebnis ist wie gewünscht.

keldorian
2012-04-09, 23:48:25
Hi,

Google Mail ist doch ein Webmailer, oder?

ich habe verschiedene Browser (Firefox, Epiphany, Chromium) und E-Mail-Programme (Thunderbird, Evolution, Kmail) ausprobiert und das Ergebnis war jedesmal das gleiche, es werden stets Plus-Zeichen statt Leerzeichen im Subject / Body der E-Mail Es handelt sich offenbar um ein allgemeineres Problem. Aber gerade deswegen müsste es angezeigt. doch eine Lösung geben...

Mr_Karlo
2012-04-10, 09:54:03
method="post" enctype="text/plain" hilft vielleicht...