# CSV-Datei als Mail-Anhang



## RoninRobert (18. Oktober 2003)

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:


```
$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.


----------



## won_gak (18. Oktober 2003)

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?


----------



## won_gak (18. Oktober 2003)

P.S. Mit MIME solltest du dich aber auskennen.

Schau dir die RFC's 2045-2049 an. (googlen)


----------



## RoninRobert (18. Oktober 2003)

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


----------



## won_gak (18. Oktober 2003)

Der Top-Level Medien-Typ ist auf jeden Fall "text". Denn die CSV ist ja einfach nur Text. Vielleicht gibt es ja"text/csv"


----------



## RoninRobert (18. Oktober 2003)

ok hab das Problem gelöst. Wen es interessiert: 

```
$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


----------

