Hey Leute,
Ich weiß, das Thema ist oft und in unterschiedlichen Foren diskutiert worden.
Ich habe es selbst hier vorm kurzem gepostet, habe aber leider keine Lösung
bekommen. Ich poste das Problem nochmals und hoffe, endlich einen
brauchbaren Hinweis oder gar eine Lösung von jemandem zu bekommen.
Mit dem Submit-Button werden zwei Emails abgeschickt. Eines an mich, in
welchem die Anfrage des Absenders enthalten ist. Das zweite Email ist
eine
Bestätigung, die an den Email-Absenders ergeht und teilt ihm mit,
dass
sein Anfrage-Mail an mich verschickt worden ist.
Der Email-Inhalt besteht aus zwei Datenarten: Einem konstanten, in der
PHP-Datei als Nachricht an den Absender kodierten Text, und zum anderen
aus Textdaten, die der Email-Absender im Formular eingegeben hatte.
In dem konstanten Text, der fix in der PHP-Datei kodiert ist, schreibe ich
die deutschen Umlaute in HTML-Codes (z.B.: ü = & uuml). Auf die
Formularfelder, die der Anfrage-Absender im Formular eingibt, habe ich
keinen Einfluss. Diese können auch Umlaute enthalten.
NUN DIE PROBLEME
==============
Problem Nr. 1:
Der konstante Text kommt in dem Bestätigungsmail an den Anfrage
Absender richtig an. Die Umlaute werden als Solche richtig dargestellt.
Nur die Daten, die vom Kunden in das Formular eingegeben wurden,
werden falsch dargestellt. Ich habe alle nur erdenklichen Varianten und
Möglichkeiten probiert, aber vergeblich; die Umlaute werden als wirres
Zeichen gezeigt. Ich bin mit meinem Latein am Ende. Wer kann mir helfen?
Problem Nr. 2:
Auf dieser Art versendete Emails werden von manchen Mailservern (z.B.
von GMX) als Spam vermutet und direkt in den Spamordner abgelegt und
nicht im Posteingangsordner.
Hier der Code:
Datei: mailversand.php
NUN: Alle Daten, die aus den Formulareingaben stammen, kommen falsch
an. Die Umlaute werden nicht angezeigt, und zwar so:
ö wird als ‚ Ã’ angezeigt (König = KÃnig)
ä wird als ‚ä’ angezeigt (zusätzlich = zusätzlich)
ü wird als ‚ü’ angezeigt (Führerschein = Führerschein)
ß wird als ‚Ã’ angezeigt (Reisepaß = ReisepaÃ)
BITTE UM EURE LÖSUNGSVORSCHLÄGE! ABER BITTE KEINE POLEMISCHEN
DISKUSIONEN, SONDERN LÖSUNGEN.
DANKE AN ALLE IM VORAUS.
Ich weiß, das Thema ist oft und in unterschiedlichen Foren diskutiert worden.
Ich habe es selbst hier vorm kurzem gepostet, habe aber leider keine Lösung
bekommen. Ich poste das Problem nochmals und hoffe, endlich einen
brauchbaren Hinweis oder gar eine Lösung von jemandem zu bekommen.
Mit dem Submit-Button werden zwei Emails abgeschickt. Eines an mich, in
welchem die Anfrage des Absenders enthalten ist. Das zweite Email ist
eine
Bestätigung, die an den Email-Absenders ergeht und teilt ihm mit,
dass
sein Anfrage-Mail an mich verschickt worden ist.
Der Email-Inhalt besteht aus zwei Datenarten: Einem konstanten, in der
PHP-Datei als Nachricht an den Absender kodierten Text, und zum anderen
aus Textdaten, die der Email-Absender im Formular eingegeben hatte.
In dem konstanten Text, der fix in der PHP-Datei kodiert ist, schreibe ich
die deutschen Umlaute in HTML-Codes (z.B.: ü = & uuml). Auf die
Formularfelder, die der Anfrage-Absender im Formular eingibt, habe ich
keinen Einfluss. Diese können auch Umlaute enthalten.
NUN DIE PROBLEME
==============
Problem Nr. 1:
Der konstante Text kommt in dem Bestätigungsmail an den Anfrage
Absender richtig an. Die Umlaute werden als Solche richtig dargestellt.
Nur die Daten, die vom Kunden in das Formular eingegeben wurden,
werden falsch dargestellt. Ich habe alle nur erdenklichen Varianten und
Möglichkeiten probiert, aber vergeblich; die Umlaute werden als wirres
Zeichen gezeigt. Ich bin mit meinem Latein am Ende. Wer kann mir helfen?
Problem Nr. 2:
Auf dieser Art versendete Emails werden von manchen Mailservern (z.B.
von GMX) als Spam vermutet und direkt in den Spamordner abgelegt und
nicht im Posteingangsordner.
Hier der Code:
Datei: mailversand.php
PHP-Code:
<?php
/* Empfaenger */
$to = $email; // Kundeneingabe in das Formular
/* Weitere Daten */
$datum = date("d.m.Y") . "/" . date("H:i");
$buero = "buero@uebrsetzung.de";
/* Betreff */
$betreff = "Übersetzung / " . $dokument;
//Übersetzung ist konstant; Variable '$dokument' ist eine Eingabe
//aus dem Formular. Der Inhalt kann sein: Reisepaß + Führerschein
/* 1. Email - Nachricht an den Kunden*/
$message = '
<html>
<head>
<title> Übersetzung </title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
//auch mit "charset=iso-8859-1" probiert
</head>
<body>
';
$message .='<table><tr><td>'.$firma.'<br></tr></td>';
$message .='<tr><td>'.$anrede.' '.$titel.' '.$vorname.' ';
$message .=.$nachname.'<br></td></tr>';
$message .='<tr><td>'.$strasse.'<br></td></tr>';
$message .='<tr><td>'$plz.' '.$ort.'<br><br><tr><td>';
$message .='<tr><td>';
$message .=.$sehr.' '.$anrede.' '.$titel.' '.$nachname.' ';
$message .='<br><br></td></tr>';
/*
jetzt kommt mein konstant kodierter Text. Dieser Text kommt
richtig mit umgewandelten Umlauten und anderen Sonderzeichen
beim Empfänger an, egal ob ich die Umlaute als sloche ausschreibe
oder in kodierter Form.
*/
$message .='<tr><td>Vielen Dank für Ihre Anfrage. Wir werden';
$message .='Sie bald kontaktieren und Ihnen einen unverbindlichen';
$message .='Kostenvoranschlag machen.<br><br>Bis dahin verbleiben';
$message .='wir mit freundlichen Grüssen,<br><br>';
$message .='Ihr GlobTrans-Team<br><br></td></tr>';
$message .='<tr><td>Berlin, am '.$datum.'</td></tr>';
$message .='-------------------------------------------------<br>';
$message .='</body></html>';
/*
2. Email – Anfrage des Kunden an mich. All diese Angaben, die der
Kunde über Formular ausfüllt und an mich abschickt, kommen
nicht richtig an. Die Umlaute werden nicht dargestellt. Ebenfalls
die Formulardaten aus dem 1. Mail
*/
$order = '
<html>
<head>
<title>Uebersetzung</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
//auch "charset=8859-1" probiert
</head>
<body>
';
$order .= '
<table><tr> <td>Folgende Info-Anforderung wurde am '.$datum.'
abgeschickt:<br><br></td></tr>';
$order .= '<tr> <td>Firma: '.$firma.'<br></td></tr>';
$order .='<tr><td>Anrede/Titel/Name: '.$anrede.' '.$titel.' ';
$0rder .=.$vorname.' '.$nachname.'<br></td></tr>';
$order .='<tr><td>Strasse: '.$strasse.'<br></td></tr>';
$order .='<tr><td>PLZ/Ort: '.$plz.' '.$ort.'<br></td></tr>';
$order .='<tr><td>Land: '.$land.'<br></td></tr>';
$order .='<tr><td>Telefon: '.$telefon.'<br></td></tr>';
$order .='<tr><td>Fax: '.$fax.'<br></td></tr>';
$order .='<tr><td>Handy: '.$mobil.'<br></td></tr>';
$order .='<tr><td>E-Mail: '.$email.'<br></td></tr>';
$order .='<tr><td>EU_Steuer Nr.: '.$eust.'<br></td></tr>';
$order .='<tr><td>Geburtsdatum: '.$gebdat.'<br></td></tr>';
$order .='<tr><td>Dokumentart: '.$dokument.'<br></td></tr>';
$order .='<tr><td>Anzahl Zeilen: '.$zeilen.'<br></td></tr>';
$order .='<tr><td>Quellsprache: '.$qsprache.'<br></td></tr>';
$order .='<tr><td>Zielsprache: '. $zsprache.'<br></td></tr>';
$order .='<tr><td>Beglaubigung: '.$beglaubigt.'<br></td></tr>';
$order .='<tr><td>Beschreibung: '.$beschreibung;
$order .='<br></td></tr>';
$order .='<tr><td>Erreichbar von: '.$zeit_von .' bis ';
$order .=.$zeit_bis .'<br></td></tr>';
$order .='<tr><td>Mitteilung:<br>'.$beschreibung.'<br></td></tr> ';
$order .='<tr><td>- Ende der automatisch generierten eMail - <br>';
$order .='</td></tr>';
$order .='</table></body></html>
';
/* Einstellung des Header-Bereichs für das Mail an den Kunden*/
$headers_gw = "MIME-Version: 1.0\r\n";
$headers_gw .= "Content-type: text/html; charset=iso-8859-15\r\n";
$headers_gw .= "Content-type: text/html; charset=utf-8\r\n";
// $headers_gw .= "Content-Transfer-Encoding: 8bit\r\n";
/* zusätzliche Header */
$headers_gw .= "To: ".$to."\r\n";
$headers_gw .= "From: ".$absender."\r\n";
$headers_gw .= "CC: \r\n";
$headers_gw .= "BCC: \r\n";
/* Header für das Kunden-Email an mich */
$headers_ku = "MIME-Version: 1.0\r\n";
$headers_ku .= "Content-type: text/html; charset=iso-8859-15\r\n";
$headers_ku .= "Content-type: text/html; charset=utf-8\r\n";
/* zusaetzliche Header für das unden-Email an mich*/
$headers_ku .= "To: ".$globweb."\r\n";
$headers_ku .= "From: ".$to."\r\n";
$headers_ku .= "CC: \r\n";
$headers_ku .= "BCC: \r\n";
/* Verschicken der Mail */
@mail($buero,$betreff,$order,$headers_ku);
@mail($to,$betreff,$message,$headers_gw);
}
?>
an. Die Umlaute werden nicht angezeigt, und zwar so:
ö wird als ‚ Ã’ angezeigt (König = KÃnig)
ä wird als ‚ä’ angezeigt (zusätzlich = zusätzlich)
ü wird als ‚ü’ angezeigt (Führerschein = Führerschein)
ß wird als ‚Ã’ angezeigt (Reisepaß = ReisepaÃ)
BITTE UM EURE LÖSUNGSVORSCHLÄGE! ABER BITTE KEINE POLEMISCHEN
DISKUSIONEN, SONDERN LÖSUNGEN.
DANKE AN ALLE IM VORAUS.
Kommentar