Hallo php.de Community,
vorweg möchte ich anmerken das ich mit php erst vor kurzem angefangen habe...
Deswegen hakt es jetzt auch einfach... deshalb benötige ich bei meinem Bewerbungsformular auch kurz eure Hilfe...
Dazu muss ich sagen, das senden der eMail an angegebene Adresse funktioniert bereits, nur bei den Dateianhängen stimmt etwas nicht... Diese werden zwar gesendet aber nur beschädigt empfangen... Wo liegt der Fehler?
PHP-Code:
<?php
error_reporting(E_ALL);
//Hier müssen die grundlegenden Werte eingegeben werden
$discribe="Hier können Sie mit mir Kontakt aufnehmen, indem Sie eine Email, eventuell mit Anhang, an mich senden."; //Seitenbeschreibung
$title="Kontaktformular"; //Seitentitel
define ('MAILTO', "bewerbung@email.de"); // Empfänger hier eintragen
define ('MAILFROM', "bewerbung@email.de"); // ggfls. Absender hier eintragen
define ('CHARSET', "iso-8859-1"); // Zeichenkodierung ggfls. anpassen
$Pflichtfelder = array('Name','Email','Betreff','Nachricht'); // ggfls. weitere Pflichtfelder angeben
//Ab hier brauchst du nur etwas verändern, wenn das Formular angepasst werden soll
/* Anhang */
/* Wenn eine Datei als Anhang ausgewaehlt wurde */
if(!empty($_FILES['anhang']['name']))
{
/* Lese die temporaere Datei, die der Benutzer hochgeladen hat aus */
$datei_inhalt = fread(fopen($_FILES['anhang']['tmp_name'],"r"),filesize($_FILES['anhang']['tmp_name']));
/* Codiere Datei ins BASE64-Format */
$datei_inhalt = chunk_split(base64_encode($datei_inhalt));
/* Generiere einen Boundary */
$boundary = strtoupper(md5(uniqid(time())));
/* Beginne den Mail-Header mit MIME-Mail-Header */
$mail_header = "MIME-Version: 1.0\n";
$mail_header .= "From: ".MAILFROM."\n";
$mail_header .= "Content-Type: multipart/mixed; boundary=".$boundary."\n\n";
/* Hier faengt der normale Mail-Text an */
$mail_body = "--".$boundary."\r\n";
$mail_body .= "Content-Type: text/plain;\n";
$mail_body .= "Content-Transfer-Encoding: 8bit\n\n";
$mail_body .= print_r($_POST,true)."\r\n";
/* Hier faengt der Datei-Anhang an */
$mail_body .= "--".$boundary."\n";
$mail_body .= "Content-Type: ".$_FILES['anhang']['type']."; name=\"".$_FILES['anhang']['name']."\"\n";
$mail_body .= "Content-Transfer-Encoding: base64\n";
$mail_body .= "Content-Disposition: attachment; filename=\"".$_FILES['anhang']['name']."\"\r\n";
$mail_body .= $datei_inhalt."\n";
/* Hier faengt der Datei-Anhang an */
$mail_body .= "--".$boundary."\r\n";
$mail_body .= "Content-Type: ".$_FILES['anhang1']['type']."; name=\"".$_FILES['anhang1']['name']."\"\n";
$mail_body .= "Content-Transfer-Encoding: base64\n";
$mail_body .= print_r($_POST,true)."\n\n";
$mail_body .= "Content-Disposition: attachment; filename=\"".$_FILES['anhang1']['name']."\"\r\n";
$mail_body .= $datei_inhalt."\n";
/* Hier faengt der Datei-Anhang an */
$mail_body .= "--".$boundary."\r\n";
$mail_body .= "Content-Type: ".$_FILES['anhang2']['type']."; name=\"".$_FILES['anhang2']['name']."\"\n";
$mail_body .= "Content-Transfer-Encoding: base64\n";
$mail_body .= print_r($_POST,true)."\n\n";
$mail_body .= "Content-Disposition: attachment; filename=\"".$_FILES['anhang2']['name']."\"\r\n";
$mail_body .= $datei_inhalt."\n";
/* Gibt das Ende der eMail aus */
$mail_body .= "--".$boundary."--\n";
}
else
{
$mail_header = 'Content-Type: text/plain; charset='.CHARSET;
$mail_body = "";
if(MAILFROM) $mail_body .= chr(13).chr(10).'From: '.MAILFROM.'\n\n';
$mail_body .= print_r($_POST,true).'\n\n';
}
if($Formular_abgeschickt = !empty($_POST)) {
$Formular_leer = true; set_magic_quotes_runtime(0);
$_POST = array_map('Formular_Daten', $_POST);
}
function Formular_Daten($val) {
global $Formular_leer;
if(is_array($val)) return array_map('Formular_Daten', $val);
if(get_magic_quotes_gpc()) $val = stripslashes($val);
if($val = trim($val)) $Formular_leer = false;
return $val;
}
function Formular_Pflichtfelder() {
global $Pflichtfelder;
$Fehler = '';
foreach ($Pflichtfelder as $Feld) {
$key = str_replace(' ','_',$Feld);
if(!(isset($_POST[$key]) && trim($_POST[$key]))) {
if($Fehler) $Fehler .= '<br />';
$Fehler .= 'Pflichtfeld "' . $Feld . '" <span style="color: #CC0000;">nicht ausgefüllt.</span>';
}
}
return $Fehler;
}
function Formular_neu($log='.htPOSTdata.txt') {
if(file_exists($log) && is_readable($log)
&& file_get_contents($log) == print_r($_POST,true))
return false;
if($handle=@fopen($log, 'w')) {
fwrite($handle, print_r($_POST,true)); fclose($handle);
}
return true;
}
function Formular_Check() {
global $Formular_leer;
if($Formular_leer) $Fehler = '<span style="color: #CC0000;">Keine Daten eingetragen.</span>';
elseif(!empty($_POST['Mail'])) $Fehler = 'Die Spam-Falle wurde ausgefüllt!'; //Fehlerausgabe wenn das Feld "Mail" (Bot-Falle) ausgefüllt ist
elseif($_FILES['anhang']['size'] > 5242880) $Fehler = '<span style="color: #CC0000;">Der Dateianhang ist zu groß!</span>'; //Fehlerausgabe wenn der Dateianhang größer als 1MB ist
elseif($_FILES['anhang1']['size'] > 5242880) $Fehler = '<span style="color: #CC0000;">Der Dateianhang ist zu groß!</span>'; //Fehlerausgabe wenn der Dateianhang größer als 1MB ist
elseif($_FILES['anhang2']['size'] > 5242880) $Fehler = '<span style="color: #CC0000;">Der Dateianhang ist zu groß!</span>'; //Fehlerausgabe wenn der Dateianhang größer als 1MB ist
elseif(!$Fehler = Formular_Pflichtfelder()) {
if(!Formular_neu()) $Fehler = '<span style="color: #CC0000;">Nachricht war bereits verschickt.</span>';
}
return $Fehler;
}
function Formular_Eingabe($Feldname, $def='') {
if(!empty($_POST[$Feldname])) echo htmlspecialchars($_POST[$Feldname]);
else echo $def;
}
?>
Vielen Dank
Nakedchef