CSV-Datei als Mail-Anhang

RoninRobert

Mitglied
Hallo
Ich möchte eine CSV-Datei, die durch ein Formular editiert wird als Mail-Anhanf verschicken. Die CSV-Datei wird schon richtig editier nur bekomm ich es nicht hin, dass sie auch als Anhang verschickt wird. Hier der Code:

PHP:
 $header = "From: $ sender <$frommail>\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"========1234567\"";
$sender = stripslashes($sender);
$frommail = stripslashes($frommail);
$subject = stripslashes($subject);
$message = stripslashes($message);
// die Funktion stripslashes() entfernt den Backslash vor Sonderzeichen
$tomail="bla@bla.de";
$fd = fopen("datei.csv", "r+");
// Obere Spalte wird erstellt
$spalten = array("Name", "Vorname", "Adresse", "E-Mail", "Telefon");
fputs($fd, implode(" ; ", $spalten)."\n");
//Folgende zeile sooft wiederholen, wie Einträge vorhanden sind.
$eintrag = array("Robert", "Hans", "Weg", "bla@bla", "123456");
fputs($fd, implode(" ; ", $eintrag)."\n");
$anhang = chunk_split(base64_encode(fread( $fd, filesize("datei.csv"))));
fclose($fd);
$message = "--========1234567\nContent-Type: text/plain; charset=\"us-ascii\"\nContent-Transfer-Encoding: 7bit\n\n\n".$message."\n--========1234567\nContent-Type: $file_type; name=$file_name\nContent-Transfer-Encoding:base64\nContent-Disposition: attachment; filename=\"$file_name\"\n\n".$anhang;
mail($tomail,$subject,$message,$header);

wahrscheinlich habe ich da irgendwo ein dicken Fehler drin, weil ich mich mit der Mime Funktion nicht auskenne. Jedenfalls danke schon mal für eure Hilfe.
 
Also, bei mir sieht das so aus:

Header:
From: $from_name<$from_email>
Reply-To: <$from_email>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="MIME_BOUNDRY"

Text:

--MIME_BOUNDRY
Content-Type: text/plain;
Content-disposition: inline;

$message

--MIME_BOUNDRY
Content-Type: $file_type; name="$file_name"
Content-disposition: attachment
Content-Transfer-Encoding: base64
$anhang
--MIME_BOUNDRY--


Damit sollte es eigentlich gehen.
Erscheint dein Attachment etwa als Text IN der Mail?
 
die "datei.csv" wird nicht anghängt, da kommt nur ne leere txt Datei.
Wahrscheinlich liegt das daran, dass ich die Variablen $file-name und $file_typ irgendwie belegen muss, aber wie, wenn es eine csv Datei ist?
Danke Ronin
 
Der Top-Level Medien-Typ ist auf jeden Fall "text". Denn die CSV ist ja einfach nur Text. Vielleicht gibt es ja"text/csv"
 
ok hab das Problem gelöst. Wen es interessiert:
PHP:
 $header = "From: $ sender <$frommail>\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"========1234567\"";

$sender = stripslashes($sender);
$frommail = stripslashes($frommail);
$subject = stripslashes($subject);
$message = stripslashes($message);
// die Funktion stripslashes() entfernt den Backslash vor Sonderzeichen
$tomail="asd@asds.de";
$fd = fopen("datei.csv", "r+");
// Obere Spalte wird erstellt
$spalten = array("Name", "Vorname", "Adresse", "E-Mail", "Telefon");
fputs($fd, implode(" ; ", $spalten)."\n");
//Folgende zeile sooft wiederholen, wie Einträge vorhanden sind.
$eintrag = array("Robert", "Hans", "Weg", "bla@bla", "123456");
fputs($fd, implode(" ; ", $eintrag)."\n");
fclose($fd);
$fd = fopen("datei.csv", "r+");
$anhang = chunk_split(base64_encode(fread( $fd, filesize("datei.csv"))));
fclose($fd);
$message = "--========1234567\nContent-Type: text/plain; charset=\"us-ascii\"\nContent-Transfer-Encoding: 7bit\n\n\n".$message."\n--========1234567\nContent-Type:text; name=datei.csv\nContent-Transfer-Encoding:base64\nContent-Disposition: attachment; filename=\"$file_name\"\n\n".$anhang;
mail($tomail,$subject,$message,$header);

Gruß Ronin
 
Zurück