Michael: e-Mail mit Anhang (1blu)

Hallo,
Ich habe eine eingabemaske, bei der man eine Datei (bzw. zwei Dateien) auswählt. Diese datei lade ich dann auf meinen FTP-Server. Jetzt würd ich gern zusätzlich noch eine Email an zwei Adressen mit der Datei als Anhang verschicken.

Hier meine Eingabemaske:

....
<table>
<form name="verzeichnis" action="test2.php">
<tr>
    W&auml;hlen Sie die Scouting-Datei aus:<br>
  <input name="lokale_datei" size=50 type="file" maxlength="1024"><br><br>
</tr>
<tr>
<input type="submit" name="Abschicken" value="Abschicken">
</form>
</table>
....

Nun hab ich diesen Code im Internet gefunden und geändert:

...
$file_name    = $lokale_datei_name;
$file         = $lokale_datei;
$from         = "meine-adresse@web.de";
$to           = "ziel-adresse@web.de";
$message      = "Mitteilung";
$betreff      = "Test";
$boundary     = strtoupper(md5(uniqid(time())));
$mail_header  = "From:Meine Adresse meine-adresse@web.de\n";
$mail_header .= "MIME-Version: 1.0";
$mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";
$mail_header .= "\n\nThis is a multi-part message in MIME format ";
$mail_header .= "--  Dies ist eine mehrteilige Nachricht im MIME-Format";
$mail_header .= "\n--$boundary";
$mail_header .= "\nContent-Type: text/plain";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";
$mail_header .= "\n\n$message";
$file_content = fread(fopen($file,"r"),filesize($file));
$file_content = chunk_split(base64_encode($file_content));
$mail_header .= "\n--$boundary";
$mail_header .= "\nContent-Type: application/octetstream; name="$file_name"";
$mail_header .= "\nContent-Transfer-Encoding: base64";
$mail_header .= "\nContent-Disposition: attachment; filename="$file_name"";
$mail_header .= "\n\n$file_content";
$mail_header .= "\n--$boundary--";

$versand = mail($to,$betreff,$message,$mail_header);
mail($to,$betreff,$message,$mail_header);
if (!$versand) {
 echo "<p>Versand war fehlerhaft!</p>";
} else {
 echo "<p>Versand war erfolgreich</p>";
  }
echo "<br><br>";
echo $mail_header;
...

Das Problem ist nun, dass zwar kommt "Versand war erfolgreich" aber keine email ankommt.Ich bin bei 1Blu funktioniert, dass dort vielleicht nicht?
Ich will hauptsächlich html-Dateien hochladen/versenden.

Kann mir jemand helfen?

Vielen Dank

Hier das echo von $mail_header:

From:Meine Adresse MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=0BA43DCEF6D87A86D230A6B839272C61 This is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format --0BA43DCEF6D87A86D230A6B839272C61 Content-Type: text/plain Content-Transfer-Encoding: 8bit Mitteilung --0BA43DCEF6D87A86D230A6B839272C61 Content-Type: application/octetstream; name="Greece12.bbt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Greece12.bbt" BQwA//8CAAcAQ1BsYXllchBCb2dyaXMsIEdlb3JnaW9zAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA AAQAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwr0BE//8A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAFVNha2VsYXJpb3UsIEV2YW5n ZWxvcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAsa9ARP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAABgBVNaWNoYWxvZ2xvdSwgQW50b25pb3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAA BgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKvQET//wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAPTWF0YWxvbiwgTWFyaW9zAAAA AAAAAAAAAAAAAAAAAAAAAAAABwAAAAcAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAACzr0BE//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAGAGUdpYW5ub3BvdWxvcywgQ2hhcmFsYW1ib3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAA AP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALSvQET//wAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAQVGF0YXJvdW5pcywgQXJpcwAAAAAA AAAAAAAAAAAAAAAAAAAAAAkAAAAJAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAta9ARP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB gBdMaW1iZXJvcG91bG9zLCBDaHJpc3RvcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAKAAAA//// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtq9ARP//AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgBJJb2FraW1pZGlzLCBTaW1lb24AAAAAAAAA AAAAAAAAAAAAAAAAAAALAAAACwAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAALevQET//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAS VHNhaXJlbGlzLCBNaWNoYWlsAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAD/////AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4r0BE//8AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAFEdpYW5uYWtpZGlzLCBNaWNoYWlsAAAAAAAAAAAAAAAA AAAAAAAAAAAADQAAAA0AAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAC5r0BE//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAFlZvdWdp b3VrYXMsIEFsZXhhbmRyb3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAP////8AAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALqvQET//wAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAYARR291bGFzLCBTdGlsaWFub3MAAAAAAAAAAAAAAAAAAAAA AAAAAAAPAAAADwAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ALuvQET//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEU1hbm91c2VsaXMs IE1hbm9zAAAGR3JlZWNlABVWbGFzb3BvdWxvcywgR2Vvcmdpb3MAB0F0aCBEaXIQU0NIT09ML0hP TUUgVE9XTgMBBUNMQVNTA0VYUAAAAAAAvK9ARP// --0BA43DCEF6D87A86D230A6B839272C61--

Da kann doch irgendwas nicht stimmen.

  1. Hi,

    <form name="verzeichnis" action="test2.php">

    hier fehlen noch die Attribute method="post" und enctype="multipart/form-data". Mich wundert, dass ohne diese Angaben überhaupt irgendwas Verwertbares beim Server ankommt.

    Nun hab ich diesen Code im Internet gefunden und geändert:

    Dieser Code scheint böse[tm] zu sein. Wo kommen die Variablen $lokale_datei und $lokale_datei_name her? Sieht ganz so aus, als verlässt sich da jemand darauf, dass die PHP-Option register_globals entgegen der allgemeinen Empfehlung (und entgegen der Defaulteinstellung) aktiviert ist.

    $mail_header  = "From:Meine Adresse meine-adresse@web.de\n";

    Der Zeilenumbruch ist nicht korrekt. Hier muss eine Kombination CR/LF verwendet werden, also \r\n. Ein \n allein reicht nicht.

    $mail_header .= "MIME-Version: 1.0";
    $mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";

    Und wieso gehst du hier plötzlich dazu über, den Zeilenumbruch vorne dranzuschreiben anstatt hinten, wo man ihn erwarten würde?

    $file_content = fread(fopen($file,"r"),filesize($file));

    Hoppla, weiter oben sah es noch so aus, als sollte $file der *Inhalt* der Datei sein. Jetzt ist es auf einmal doch der Name? Und wo liegt die Datei auf dem Server? Bestimmt nicht im gleichen Verzeichnis wie das laufende Script, sondern in irgendeinem temp-Verzeichnis.

    $mail_header .= "\nContent-Type: application/octetstream; name="$file_name"";

    Falsche Schreibweise. Es heißt "application/octet-stream".

    $versand = mail($to,$betreff,$message,$mail_header);
    mail($to,$betreff,$message,$mail_header);
    if (!$versand) {

    Das ist ja putzig: Du verschickst die Nachricht zweimal exakt identisch, interessierst dich aber nur beim ersten Mal dafür, ob's geklappt hat.

    Das Problem ist nun, dass zwar kommt "Versand war erfolgreich" aber keine email ankommt.Ich bin bei 1Blu funktioniert, dass dort vielleicht nicht?

    Wenn die Zeilenumbrüche im Mailheader mal stimmen, hast du schon wesentlich bessere Chancen. ;-)

    Frohe (F)eiertage,
     Martin

    --
    Wenn der Computer wirklich alles kann,
    dann kann er mich mal kreuzweise.
    1. Hi Martin

      Der Code hat ja echt einige Fehler.
      method="post" und enctype="multipart/form-data" hab ich in meinem Code drinnen, aber vergessen hier in den post zuschreiben.
      $lokale_datei wird ja in dem form ausgelesen.

      Jetzt hab ich einen neuen Code gefunden, klappt leider immer noch nicht:

      function mail_attach($to, $from, $subject, $message, $files = FALSE,$lb="\n") {
      // $to Recipient
      // $from Sender (like "email@domain.com" or "Name email@domain.com")
      // $subject Subject
      // $message Content
      // $files hash-array of files to attach
      // $lb is linebreak characters... some mailers need \r\n, others need \n
      $mime_boundary = "<<<:" . md5(uniqid(mt_rand(), 1));
      $header = "From: ".$from;
      if(is_array($files)) {
      $header.= $lb;
      $header.= "MIME-Version: 1.0".$lb;
      $header.= "Content-Type: multipart/mixed;".$lb;
      $header.= " boundary="".$mime_boundary.""".$lb;
      $content = "This is a multi-part message in MIME format.".$lb.$lb;
      $content.= "--".$mime_boundary.$lb;
      $content.= "Content-Type: text/plain; charset="iso-8859-1"".$lb;
      $content.= "Content-Transfer-Encoding: 7bit".$lb.$lb;
      }
      $content.= $message.$lb;
      if(is_array($files)) {
      $content.= "--".$mime_boundary.$lb;
      foreach($files as $filename=>$filelocation) {
      if(is_readable($filelocation)) {
      $data = chunk_split(base64_encode(implode("", file($filelocation))));
      $content.= "Content-Disposition: attachment;".$lb;
      $content.= "Content-Type: Application/Octet-Stream;";
      $content.= " name="".$filename.""".$lb;
      $content.= "Content-Transfer-Encoding: base64".$lb.$lb;
      $content.= $data.$lb;
      $content.= "--".$mime_boundary.$lb;
      }
      }
      }
      if(mail($to, $subject, $content, $header)) {
      return TRUE;
      }
      return FALSE;
      }

      Mit functions kenn ich mich nicht so aus.
      Wie muss ich die Datei angeben. Im Code steht ja "$files hash-array of files to attach"
      Was ist ein hash-array und wie erstell ich ihn wenn ich es mit dem form wie in meinen 1. Post mache?

      Muss ich die Variablen
      $to, $from, $subject .. schon in der Klammer nach dem functionsname bestimmen, oder erst später?

      Vielen Dank
      Michael

      1. Moin,

        Jetzt hab ich einen neuen Code gefunden, klappt leider immer noch nicht:

        du wärst gut beraten, wenn du erst einmal versuchst, wesentliche Grundlagen der Programmierung zu verstehen, und dann vielleicht auch "Spezialitäten" von PHP, bevor du solche, für einen Anfänger recht anspruchsvollen, Aufgaben in Angriff nimmst.

        Mit functions kenn ich mich nicht so aus.

        Das solltest du ändern, denn das gehört zu den absoluten Grundlagen der meisten Programmiersprachen.

        Wie muss ich die Datei angeben. Im Code steht ja "$files hash-array of files to attach"

        Das sollte dir die Beschreibung dieses Codes vom Autor eigentlich sagen. Wenn es keine gibt, ist das ein schlechtes Zeugnis für den Autor. Wenn es eine gibt und du blickst nicht durch, können wir hier sicher was draus machen.

        Was ist ein hash-array und wie erstell ich ihn wenn ich es mit dem form wie in meinen 1. Post mache?

        Die Funktion, die du vorgestellt hast, ist offensichtlich dafür gedacht, auch *mehrere* Dateien als Anhang zu verschicken. Deswegen wird ein Array übergeben, das die Angaben über diese Dateien enthält. "hash array", oder im Deutschen "assoziatives Array" deshalb, weil die Einträge hier nicht über einen numerischen Index angesprochen werden, sondern über eine Art Schlüssel, ähnlich wie Datenbankeinträge anhand ihres Schlüssels adressiert werden können.
        Aus dem zitierten Code kann man ablesen, was dieses Array enthalten muss:

        if(is_array($files)) {

        Hier wird erstmal überprüft, ob *überhaupt* ein Array übergeben wurde. Falls nicht, kann man sich ja das ganze Gedöns um die Attachments sparen.

        foreach($files as $filename=>$filelocation) {

        Da wird's interessant: Die foreach-Schleife geht nun der Reihe nach alle Arrayeinträge durch. Sie packt den Schlüssel jedes Eintrags (offensichtlich den Dateinamen) in $filename und den zugehörigen Wert (wohl den kompletten Pfad zur gewünschten Datei *auf dem Server*) in $filelocation.

        if(is_readable($filelocation)) {

        Mal sehen, ob die Datei überhaupt lesbar ist (existiert sie wirklich? Hat PHP die nötigen Zugriffsrechte?).

        $data = chunk_split(base64_encode(implode("", file($filelocation))));

        Ups, ein schöner verschachtelter Ausdruck. Also von innen nach außen aufdröseln. Erstmal den gesamten Dateiinhalt zeilenweise in ein Array holen [file()]. Dann die Zeilen zu *einem* String zusammenfassen [implode()], in base64 codieren und den langen codierten String wieder in ein Array aus einzelnen Zeilen aufteilen.

        $content.= "Content-Disposition: attachment;".$lb;
        $content.= "Content-Type: Application/Octet-Stream;";
        $content.= " name="".$filename.""".$lb;
        $content.= "Content-Transfer-Encoding: base64".$lb.$lb;
        $content.= $data.$lb;
        $content.= "--".$mime_boundary.$lb;
        }

        Und schließlich das ganze Geraffel mit den erforderlichen Rahmeninformationen in den Mail-Quelltext schreiben.

        Muss ich die Variablen $to, $from, $subject .. schon in der Klammer nach dem functionsname bestimmen, oder erst später?

        Wie ich schon sagte: Du solltest dich dringend mit den Grundlagen der Programmierung befassen, hier z.B. mit der Deklaration und dem Aufruf von Funktionen, und mit sogenannten formalen Parametern.

        Viel Glück weiter,
         Martin

        --
        Der Gast geht solange zum Tresen, bis er bricht.
        1. Danke Martin
          Ich hab mich mal über Functions informiert und weis jetzt wie ich die Variablen bestimme.

          Ich habe aber noch immer probleme mit dem hash-array $files.
          Auf der Homepage:
          http://www.planet3dnow.de/vbulletin/archive/index.php/t-161164.html
          steht keine Erklärung.

          Ich hatte sowieso vor 2 Dateien hoch zuladen, deswegen kommt mir der Code mit dem Array eigentlich entgegen, leider blick ich nicht wie ich den Array erstelle.

          Vielen Dank
          Michael