Umlaute im PHP-Formmailer
Stan
- php
Hi,
habe den Einfachen PHP-Formmailer ( http://aktuell.de.selfhtml.org/artikel/php/form-mail/ ) in meine Seite eingebaut und es funktioniert soweit alles. Das einzige Problem ist, dass Umlaute und das "scharfe S" in den E-Mails nur als Fragezeichen angezeigt werden.
Wie kann ich das Problem lösen?
MfG
Hallo,
Wie kann ich das Problem lösen?
Setz die richtigen Header.
$header = "Content-type: text/plain; charset=ISO-8859-1\n";
$header .= "Content-Transfer-Encoding: 8bit\n";
Grüße, Matze
Hello,
Setz die richtigen Header.
$header = "Content-type: text/plain; charset=ISO-8859-1\n";
$header .= "Content-Transfer-Encoding: 8bit\n";
War das jetzt nur als Beispiel gedacht?
Was ist, wenn seine Daten schon in UTF-8 codiert aus dem Frontend kommen?
Harzliche Grüße vom Berg
<http://bergpost.annerschbarrich.de>
Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)
![](http://bitworks.de/~selfHTML/Virencheck.gif)
Hallo,
War das jetzt nur als Beispiel gedacht?
ja :)
Ich weiß ja nicht wie seine Daten aussehen und ob er text/plain versenden will.
Wirklich nur das erste Beispiel welches mir eingefallen ist.
Grüße, Matze
$header = "Content-type: text/plain; charset=ISO-8859-1\n";
$header .= "Content-Transfer-Encoding: 8bit\n";
Danke, aber wo genau füge ich das ein? Es hat immernoch nicht geklappt.
Hallo,
Danke, aber wo genau füge ich das ein? Es hat immernoch nicht geklappt.
Für den Fall, dass mein Beispiel bei dir zutrifft z.b. so:
$mailtxt = 'Meine tolle Mail mit Umlauten (aber nicht in dem Satz :P';
$empfaenger = 'Empfängermailadresse';
$betreff = 'Betreffzeile';
$header = "MIME-Version: 1.0\n";
$header .= "Content-type: text/plain; charset=ISO-8859-1\n";
$header .= "Content-Transfer-Encoding: 8bit\n";
$header .= 'From: Name <Absenderadresse>\n";
mail($empfaenger, $betreff, $mailtxt, $header);
Grüße, Matze
Hallo,
$header = "MIME-Version: 1.0\n";
in der Regel sollte man übrigens \r\n verwenden, statt nur \n.
War auch nur ein Beispiel ;)
Grüße, Matze
$mailtxt = 'Meine tolle Mail mit Umlauten (aber nicht in dem Satz :P';
$empfaenger = 'Empfängermailadresse';
$betreff = 'Betreffzeile';
$header = "MIME-Version: 1.0\n";
$header .= "Content-type: text/plain; charset=ISO-8859-1\n";
$header .= "Content-Transfer-Encoding: 8bit\n";
$header .= 'From: Name <Absenderadresse>\n";
mail($empfaenger, $betreff, $mailtxt, $header);
Sorry, aber ich verstehe es nicht.
Ich habe das hier benutzt und einfach meine Daten eingefügt:
~~~php
<?php
### Konfiguration ###
# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!
# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'IhrName@provider.xy';
# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom = '"Formmailer" <IhrAndererName@provider.xy>';
# Welchen Betreff sollen die Mails erhalten?
$strSubject = 'Feedback';
# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.provider.xy/IhrName/IhreSeite.htm';
# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter = ":\t";
### Ende Konfiguration ###
if($_POST)
{
$strMailtext = "";
while(list($strName,$value) = each($_POST))
{
if(is_array($value))
{
foreach($value as $value_array)
{
$strMailtext .= $strName.$strDelimiter.$value_array."\n";
}
}
else
{
$strMailtext .= $strName.$strDelimiter.$value."\n";
}
}
if(get_magic_quotes_gpc())
{
$strMailtext = stripslashes($strMailtext);
}
mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
or die("Die Mail konnte nicht versendet werden.");
header("Location: $strReturnhtml");
exit;
}
?>
Ich kann da aber keine Stelle finden, wo das, was du gepostet hast Sinngemäß hineinpassen würde.
Hallo,
$empfaenger = 'Empfängermailadresse';
ist gleich
> $strEmpfaenger = 'IhrName@provider.xy';
> > ~~~php
> > $header .= 'From: Name <Absenderadresse>\n";
> >
ist gleich
$strFrom = '"Formmailer" IhrAndererName@provider.xy';
Nur das dein Skript hier nicht ausreichend Headerdaten sendet.
Deshalb habe ich den Header in meinem Beispiel "erweitert":
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/plain; charset=ISO-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 8bit\r\n";
$header .= "From: Name <Absenderadresse>\r\n";
Grüße, Matze
Hello,
$strFrom = '"Formmailer" IhrAndererName@provider.xy';
Nur das dein Skript hier nicht ausreichend Headerdaten sendet.
Deshalb habe ich den Header in meinem Beispiel "erweitert":$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/plain; charset=ISO-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 8bit\r\n";
$header .= "From: Name <Absenderadresse>\r\n";
Auch in diesem Thread sollte nicht unerwähnt bleiben, dass alle Daten, die in die Header einer mail aufgenommen werden, genauestens überprüft werden müssen, wenn man keine Spamschlueder bauen will.
siehe Thread https://forum.selfhtml.org/?t=162929&m=1060571
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Habe jetzt einfach
mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
or die("Die Bestellung konnte nicht abgeschickt werden. Bitte bestelle per E-Mail an: stencildruck@no-log.org");
header("Location: $strReturnhtml");
exit;
durch
mail($strEmpfaenger, $strSubject, $strMailtext, "MIME-Version: 1.0\nContent-type: text/plain; charset=ISO-8859-1\nContent-Transfer-Encoding: 8bit\nFrom: ".$strFrom)
or die("Die Bestellung konnte nicht abgeschickt werden. Bitte bestelle per E-Mail an: stencildruck@no-log.org");
header("Location: $strReturnhtml");
exit;
ersetzt und es geht jetzt!
Danke euch beiden.
Hallo,
mail($strEmpfaenger, $strSubject, $strMailtext, "MIME-Version: 1.0\nContent-type: text/plain; charset=ISO-8859-1\nContent-Transfer-Encoding: 8bit\nFrom: ".$strFrom)
du solltest noch \n durch \r\n ersetzen.
> Danke euch beiden.
Bitte bitte.
Grüße, Matze
Hello,
Danke euch beiden.
Bitte bitte.
ebenfalss gerne geschehen.
Es war aber erst der erste teil Deiner Aufgabe.
Der zweite ist, sicherzustellen, dass die Daten auch in der jetzt angegebenen Codierung vom Client (also aus dem Formular) kommen. Du musst den Browser also dazu auffordern, bitte die passende Codierung zu benutzen.
Dann müssen Deine annderen Komponenten (Webserver, Datenbank, Editor, ...) sich aber auch daran halten.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo Tom,
Es war aber erst der erste teil Deiner Aufgabe.
Der zweite ist...
Dann müssen Deine annderen Komponenten (Webserver, Datenbank, Editor, ...) sich aber auch daran halten.
es ist schon ein Elend mit den Codierungen ;)
Grüße, Matze
Hello,
$header = "Content-type: text/plain; charset=ISO-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 8bit\r\n";
Header mit \r\n abschließen, auch wenn PHP das intern teilweise ggf. wieder kaputt macht.
Irgendwann werden sie mail() auch RFC-konfomt implementiert haben...
<http://de.php.net/manual/en/function.mail.php>
in die "additional headers"
Harzliche Grüße vom Berg
<http://bergpost.annerschbarrich.de>
Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)
![](http://bitworks.de/~selfHTML/Virencheck.gif)
Hello,
habe den Einfachen PHP-Formmailer ( http://aktuell.de.selfhtml.org/artikel/php/form-mail/ ) in meine Seite eingebaut und es funktioniert soweit alles. Das einzige Problem ist, dass Umlaute und das "scharfe S" in den E-Mails nur als Fragezeichen angezeigt werden.
Wie kann ich das Problem lösen?
Indem Du Dich mit Codierung und MIME-Mail auseinandersetzt.
Mach Dir als erstes einen Plan, in welcher Codierung Deine Daten wann und wo vorliegen, dann überlege, in welcher Codierung sie per Mail übertragen werden sollen und wie Du den MTA-"Hops" und dem Empfänger das mitteilen willst.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom