E-Mail mit Anhang?

closeDieser Beitrag wurde vor 15 Jahren 11 Monaten 4 Tagen veröffentlicht. Die Informationen in diesem Beitrag sind möglicherweise veraltet. Bitte benutze die Suche oder das Archiv, um nach neueren Informationen zu diesem Thema zu suchen.

Ich bin gerade am Kontakt-Formular am Basteln: Bisher nutzte ich hier das Plugin PXS Mail Form, das eigentlich auch zuverlässig lief. Allerdings fehlte mir die Möglichkeit, Dateien an die Mail anzuhängen.

Jetzt habe ich zwar ein Mail-Formular Marke Eigenbau, aber das Anhängen von Dateien haut irgendwie nicht hin. Es ist zum Mäuse melken :)

Ich habe ein Formular genommen, welches ich für ein anderes Projekt geschrieben habe, einige Variablen angepasst, uns das ganze um ein Input-Feld vom Typ „File“ ergänzt. Dann habe ich den Code für die Generierung der Mail noch angepasst, und fertig. Dachte ich… :???:

Wenn ich eine Testmail versende, kommt die nun auch mit Anhang, und der hat auch den richtigen Namen und das korrekte Symbol für den Dateityp. Nur hat die Datei dann eine GröÃ

Hier mal der Code:

";
  $Header .= "\\nX-Sender-IP: " . $_SERVER['REMOTE_ADDR'];
  $Header .= "\\nX-Mailer: PHP v." . phpversion() . " auf {$_SERVER['SERVER_NAME']}"; 
  $Header .= "\\nMIME-Version: 1.0";
  $Header .= "\\nContent-Type: multipart/mixed; boundary = "$boundary"";
  $Header .= "\\n\\nThis is a multi-part message in MIME format  --  Dies ist eine mehrteilige Nachricht im MIME-Format";

  // Generate mail body
  $Body = "--".$boundary."\\n"; 
  $Body .= "Content-Type: text/plain; charset="utf-8"\\n"; 
  $Body .= "Content-Transfer-Encoding: 8bit\\n\\n"; 
  $Body .= $_POST['message'];

  // Attach file if submitted
  if ( $_FILES['attach']['tmp_name'] )
  {
    $filename = $_FILES['attach']['name'];
    $Body .= "\\n--".$boundary."\\n"; 
    $Body .= "Content-Type: image/jpeg; name=".$filename."\\n"; 
    $Body .= "Content-Transfer-Encoding: base64\\n"; 
    $Body .= "Content-Disposition: attachment; filename=".$filename." \\n\\n";

    $attachment = chunk_split(base64_encode(fread(fopen($filename, "r"), filesize($filename))));
    $Body .= $attachment."\\n";
  }

  // Close multipart mail
  $Body .= "--".$boundary."--\\n"; 

  // Send mail		
  mail ( get_options('admin_email'), $_POST['Subject'], $Body, $Header );
  if ( $_POST['Copy'] == 1 ) // If copy requested send mail to sender
  {
    mail ( $_POST['Email'], $_POST['Subject'], $Body, $Header );
  }

  // Show "Thank You" message
  print "
Vielen Dank für Deine Nachricht.
"; print "« Zurück zur Startseite
"; unset ( $_POST ); } else { // Es folgt der XHTML-Code zur Anzeige des Formulares ?>

Das Formularfeld mit dem Dateianhang hört auf den Namen „attach“ und eine Fehlerbehandlung gibt es noch nicht. Zudem hab ich es erst mal auf JPG-Bilder festgesetzt (Content-Type: image/jpeg)

Ich habe im Netz zwar mehrere Anleitungen gefunden, die gehen scheinbar alle von einer Datei auf dem Server aus, nicht von einer hochzuladenden Datei. Zudem hängen die meisten das, was hier in der Variable $Body steht, auch noch an $Header an, und senden dann praktisch eine leere Mail. Funktioniert auch nicht, hab’s probiert ;)

Keep it Country, Markus
Über Markus 1268 Artikel
Ich schreibe hier über Country Music und Linedance, vor allem über besuchte Veranstaltungen, aber auch Geocaching, Fußball und Politik gehören zu meinen Themen. Politisch bin ich eher links-liberal einzuordnen, beim Fußball steht der FC Schalke 04 im Mittelpunkt des Interesses.

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.

*


Mit Absenden des Kommentars akzeptiere ich die Speicherung und Verarbeitung meiner Daten gemäß der Datenschutzerklärung.


;) 
:) 
:D 
:( 
:/ 
:p 
:o 
:lol: 
:roll: 
:angry: 
:smoke: 
:mrgreen: 
:silence: 
:blush: 
:kiss: 
mehr …