Hallo allerseits!
Ich hab ein kleines Script geschrieben, dass (von einem Formular) Daten bekommt, diese dann in eine CSV-Datei schreibt und eine Email mit der CSV-Datei als Anhang verschickt.
Soweit sogut.
Nur ergibt sich jetzt ein sehr störendes Problem:
Umlaute werden in der CSV-Datei falsch dargestellt!
Ich finde aber den Fehler einfach nicht ...
Meine Frage also: Was stimmt an meinem Code nicht?
1000 Dank im Vorraus für jede Antwort!
Ich hab ein kleines Script geschrieben, dass (von einem Formular) Daten bekommt, diese dann in eine CSV-Datei schreibt und eine Email mit der CSV-Datei als Anhang verschickt.
Soweit sogut.
Nur ergibt sich jetzt ein sehr störendes Problem:
Umlaute werden in der CSV-Datei falsch dargestellt!
Ich finde aber den Fehler einfach nicht ...
Meine Frage also: Was stimmt an meinem Code nicht?
Code:
<?php
// Administrator - Email
// Name der CSV-Datei, Empfaenger, Absender, Betreff, Mailtext, Ueberschriftszeile der CSV-Datei, Dankeschoen-Text, Error-Text
$filename = "formular_email.csv";
$receiver = "xxx@xxx.de";
$sender = "Webmaster <webmaster@xxx.net>";
$subject = "Anmeldedaten aktuell";
$mailText = "Anbei die aktuellsten Anmelde-Daten.";
$csvHead = "Vorname;Zuname;Firma;PLZ;Ort;Strasse;E-Mailadresse";
$thanks = "Herzlichen Dank für Ihre Anmeldung!";
$error = "Ihre Daten konnten nicht weitergeleitet werden.
Bitte wenden Sie sich an den Webmaster.";
$nextPage = "http://xxx.de/main20.htm";
// User - Email
// Empfaenger, Absender, Befreff, Mailtext
$ureceiver = $_POST["frage_07"];
// prueft ob die CSV-Datei bereits existiert
if (!file_exists($filename))
$answers = $csvHead."\n";
else
$answers = "\n";
// Formulardaten in in einen String schreiben
$answers.= $_POST["frage_01"];
for ($i = 2; $i < 8; $i++) {
$answers.= ";".$_POST["frage_0".$i];
}
// Formulardaten in an CSV-Datei anhaengen
$fpointer = fopen($filename, "a+");
fputs($fpointer, $answers);
fclose($fpointer);
// Hier wird der Textstring der Abgrenzung generiert
$boundary = md5(uniqid(rand()));
// Das sind die Kopfzeilen der Multipart Mail
$header = "MIME-Version: 1.0\n";
$header.= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
// zusaetzliche Header
$header .= "From: ".$sender."\n\n";
// HTML-Text
$text.= "--".$boundary."\n";
$text.= "Content-Type: text/html; charset=\"UTF-8\"\n";
$text.= "Content-Transfer-Encoding: 8bit\n\n";
$text.= "
<html>
<head>
<title>".$subject."</title>
</head>
<body>
".$mailText."
</body>
</html>\n";
// CSV-Datei
$text.= "--".$boundary."\n";
$text.= "Content-Type: text/comma-separated-values name=".$filename."\n";
$text.= "Content-Transfer-Encoding: base8\n";
$text.= "Content-Disposition: attachment; filename=".$filename."\n\n";
// die Datei wird komplett in einen String eingelesen und in die Mail eingefuegt
$attachment = file_get_contents($filename);
$text.= $attachment."\n";
// abschliessnde Begrenzung der Multipart-Mail
$text.= "--".$boundary."--\n";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Danke</title>
<link rel='stylesheet' type='text/css' href='../style.css'>
<style type='text/css'>
body.main { background: #323232; }
</style>
</head>
<body>
<?
// EMail abschicken
if (mail($receiver, $subject, $text, $header)) {
?>
echo "<h1>".$thanks."</h1>";
// mail($ureceiver, $usubject, $umailtext, "from:$usender");
} else {
echo "<h1>".$error."</h1>";
}
?>
weiter
</body>
</html>

Kommentar