Email Anhang Script prolem

madirfan

Erfahrenes Mitglied
hallo Ihr

ich hab ein Formular gebaut
<form action="kontaktformular.php" method="post" enctype="multipart/form-data">

um im form <INPUT TYPE=file SIZE=20 NAME=datei>
parameter hinzugefügt.

im kontaktformular.php steht dies
PHP:
<table width="200" border="0" align="center">
  <tr>
    <td bgcolor="#FFFFFF">
	<?php

$mail_header = "From:Test <$from>\n";
$mail_header .= "MIME-Version: 1.0";

/// wichtig
$mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";
$mail_header .= "\n\nThis is a multi-part message in MIME format -- 

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";
$mail_header .= "\n--$boundary";

//wichtig
$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--";
mail($Empfaenger,"Betreff",$Mailnachricht,$Mailbetreff);


$Empfaenger = "++++@web.de"; 

if($_REQUEST['Send']) 
 { 

   if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Marke'])) 
   { 
      echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus!"; 
   } 
   else 
   { 
      $Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n"; 
      while(list($Formularfeld, $Wert)=each($_REQUEST)) 
      { 
         if($Formularfeld!="Send") 
         { 
            $Mailnachricht .= $Formularfeld.": ".$Wert."\n"; 
         } 
      } 
      $Mailnachricht .= "\nDatum/Zeit: "; 
      $Mailnachricht .= date("d.m.Y H:i:s"); 
      $Mailbetreff = "Auto: "; 
      $Mailbetreff .= $_REQUEST['Marke']; 
             
      mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']); 
      echo"Vielen Dank f&uuml;r Ihre eMail!"; 
   } 
} 
else 
{ 
   echo"Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese <a href=\"kontaktformular.php\">Seite</a>."; 
} 
  
  
?> 
      &nbsp;</td>
  </tr>
</table>

sobald ich eine mail versende, bekomn ich zwar die info,dass die mail versendet wurde, ABER der anhang, den ich dazu gefügt habe, bekomm ich nicht.
ich bekomm sozusagen die mail ohne das hinzugefügte bild.

was hab ich falsch gemacht..
 
Aus dem genannten Kontext habe ich ein paar Fragen: Wo kommen die Variable $from, $boundary, $message, $file_name und $file_content her? Und was machst du mit der zusammengesetzten Nachricht in $mail_header?
 
diese code hatte ich ausm netz..habs uebernommen..

hast du ein code parad,was ich benutzen kann?


das is mein default code.. das funks soweit..

PHP:
$Empfaenger = "++++@web.de"; 

if($_REQUEST['Send']) 
 { 

   if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Marke'])) 
   { 
      echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus!"; 
   } 
   else 
   { 
      $Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n"; 
      while(list($Formularfeld, $Wert)=each($_REQUEST)) 
      { 
         if($Formularfeld!="Send") 
         { 
            $Mailnachricht .= $Formularfeld.": ".$Wert."\n"; 
         } 
      } 
      $Mailnachricht .= "\nDatum/Zeit: "; 
      $Mailnachricht .= date("d.m.Y H:i:s"); 
      $Mailbetreff = "Auto: "; 
      $Mailbetreff .= $_REQUEST['Marke']; 
             
      mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']); 
      echo"Vielen Dank f&uuml;r Ihre eMail!"; 
   } 
} 
else 
{ 
   echo"Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese <a href=\"kontaktformular.php\">Seite</a>."; 
} 
  
  
?>


ich hab auch diesen code gefunden..aber den ich kan ich auf meine code nicht anpassen..

PHP:
<?php 
// Wenn das Formular versendet wird 
if($_POST['submit']) { 
    // eMailadresse des Webmasters 
    $admin_mail    = '+++@web.de'; 
     
    // Empfänger 
    $adressee    = $_POST['adressee']; 
     
    // Betreff 
    $head        = $_POST['head']; 
     
    // Nachricht 
    $text        = $_POST['message']; 
     
    // Header's 
    $sender        = "From: ".$_POST['sender']."\n"; 
     
    // PHP >= 5 
    if(phpversion()    >= 5) { 
        // Name des Anhangs in der Mail 
        $filename    = $_FILES['file']['name']; 
     
        // Text der Nachricht 
        $message    = $text; 
         
        // Aufbau des Anhangs 
        $message    .= "\r\n"; 
         
        // Anhang starten 
        $message    .= "begin 666 $filename\r\n"; 
         
        // Datei einlesen und passend encoden 
        $message    .= convert_uuencode( 
                                        fread( 
                                                fopen($_FILES['file']['tmp_name'], "r"), 
                                                $_FILES['file']['size'] 
                                        ) 
                        ); 
         
        // Anhang Ende 
        $message    .= "end\r\n"; 
         
    // PHP Version < 5 
    } else { 
        // Endung herausfinden 
        $end            = explode('.', $_FILES['file']['name']); 
         
        // passenden MIME-Typ suchen 
        switch ($end[1]) { 
            case 'gz': $types    = 'application/gzip'; 
            break; 
                  
            case 'jpg': 
            case 'jpeg': 
            case 'jpe': $types    = 'image/jpeg'; 
            break; 

            case 'png': $types    = 'image/png'; 
            break; 

            case 'ico': $types    = 'image/x-icon'; 
            break; 

            case 'gif': $types    = 'image/gif'; 
            break; 
             
            // Wenn es den noch nicht gibt, eine mail an den admin senden und abrechen 
            default: mail($admin_mail, 'neuer MIME-Typ erforderlich', 'Es wurde versucht folgende Datei zu versenden: '.$_FILES['file']['name'].'\nEs ist aber kein MIME-Typ für diese Endung vorhanden.'); 
                     die('<b>Der gewünschte Dateityp wird noch nicht unterstützt! Es wurde automatisch eine eMail an den Webmaster versandt, damit er das Script updaten kann. Bitte haben Sie etwas Geduldt.'); 
            break; 
        } 
         
        // Name des Anhangs in der Mail 
        $filename        = $_FILES['file']['name']; 

        // Datei einlesen 
        $filecontent    = fread( 
                                fopen($_FILES['file']['tmp_name'], "r"), 
                                $_FILES['file']['size'] 
                        ); 
         
        // Trenner erstellen 
        $splitter        =    md5(uniqid(time())); 
         
        // MIME Version festlegen 
        $sender            .= "MIME-Version: 1.0\n"; 
         
        // festlegen das die mail aus mehreren teilen besteht, die gemischt vorkommen und ersten teil mit Trenner einleiten 
        $sender            .= "Content-Type: multipart/mixed; boundary=$splitter\n\n"; 
         
        // nachricht, wenn kein MIME unterstützt wird 
        $message        = "This is a multi-part message in MIME format\n"; 
         
        // ersten teil beenden 
        $message        .= "--$splitter\n"; 
         
        // Content-type und Encoding für die nachricht festlegen 
        $message        .= "Content-Type: text/plain\n"; 
        $message        .= "Content-Transfer-Encoding: 8bit\n\n"; 
         
        // Nachricht einfügen 
        $message        .= $text."\n"; 
         
        // teil zwei beenden 
        $message        .= "--$splitter\n"; 
         
        // Type und Encoding für den anhang festlegen und im den namen geben 
        $message        .= "Content-Type: ".$types."; name=\"$filename\"\n"; 
        $message        .= "Content-Transfer-Encoding: base64\n"; 
         
        // mit "attachment" sagen das es ein anhang ist und namen geben 
        $message        .= "Content-Disposition: attachment; filename=\"$filename\"\n\n"; 
         
        // Inhalt des anhangs einfügen, encoden und zelen auf 72 zeichen kürzen 
        $message        .= chunk_split(base64_encode($filecontent))."\n"; 
         
        // email beenden 
        $message        .= "--$splitter--"; 
    } 
     
    // versenden und nachricht ausgeben 
    if(mail($adressee, $head, $message, $sender)) 
        echo '<b>Die eMail wurde erfolgreich versandt.</b>'; 
    else 
        echo '<b>Es gab leider einen unbekannten Fehler. Sollte dieser des Öfteren auftreten, kontaktieren Sie bitte den <a href="mailto: '.$admin_mail.'">Webmaster</a>.</b>'; 
} 
?>
 
Zuletzt bearbeitet:
Falls Du was fertiges suchst wirst Du ueber meine Signatur eventuell den Weg zum Glueck finden koennen.
Falls Du aber was lernen willst erstell mal eine Mail und poste die Header hier.

Mir sieht es im Moment ein wenig danach aus als wuerde bei mail() was zerwuerfelt werden da die erstellten Header auf den ersten Blick nicht schlecht ausschauen.
 
Hier kannst du dir den [post=1182295]schematischen Aufbau einer mehrteiligen Nachricht[/post] anschauen.
 
Zurück