Ich sehe soweit kein Fehler. Wenn Du dir den ganzen Mail Krams erspraen willst und sicher gehen willst, dass die Mails nicht so leicht als Spam eingeordnet werden, nutzte Phpmailer
Hallo!
ich nutze mail() zum versenden eine Mail mit Anhang.
Leider wird dabei auch der eigentliche Nachrichtentext als Anhang (zB ATT000X.txt) an die Email gehangen, statt wie gewohnt angezeigt zu werden. Gibt es eine Möglichkeit, den Text an gewohnter Stelle anzuzeigen?
Hier ist mein Code:
Vielen Dank und einen schönen Sonntag!PHP-Code:// Basisangaben
$betreff = "[HP-Mailer] BEWERBUNG";
$mailto = "mailme";
// Mailbody
$mailBody = "
BEWERBUNG\n=========================\n
Persoenliche Daten:
--------------------
Name:\t\t".$_POST['name']."
Vorname:\t\t".$_POST['vorname']."
Strasse,Nr:\t".$_POST['strasse']." ".$_POST['nr']."
Plz Ort:\t".$_POST['plz']." ".$_POST['ort']."
Telefon:\t".$_POST['telefon']."
EMail:\t".$_POST['email']."
Geburtsdatum:\t".$_POST['geburtsdatum']."
Nationalitaet:\t".$_POST['nationalitaet']."
\n
Bewerbung als:\t\t".$_POST['position']."
bev. Einsatzort:\t\t".$_POST['einsatzort']."
Arbeitszeit:\t\t".$_POST['arbeitszeit']."
fruehester Eintrittstermin:".$_POST['eintritt']."
\n
Freitext:\t".$_POST['nachricht']."
\n
angehaengte Dateien: \n".$nameLebenslauf."
\n".$nameLebenslauf."
\n".$nameZeugnis."
\n
\n
Empfangen am ".date("d.m.Y")." um ".date("H:i:s")."
von ".$_SERVER['REMOTE_ADDR']."
\n
=== ENDE ===";
// Boundary generieren
$boundary = md5(uniqid(time()));
// Header erzeugen
$header = "From: ".$_POST['vorname']. " " .$_POST['name']." <".$_POST['email'].">";
$header .= "\n";
$header .= "MIME-Version: 1.0";
$header .= "\n";
$header .= "Content-Type: multipart/mixed; boundary=".$boundary;
$header .= "\n\n";
$header .= "This is a multi-part Message in MIME format";
$header .= "\n";
$header .= "--".$boundary;
$header .= "\n";
$header .= "Content-Type: text/plain";
$header .= "Content-Transfer-Encoding: 8bit";
$header .= "\n\n";
$header .= $mailBody;
$header .= "\n";
$header .= "--".$boundary;
$header .= "\n";
$header .= "Content-Type: ".$mimetypeLebenslauf."; name=".$nameLebenslauf;
$header .= "\n";
$header .= "Content-Transfer-Encoding: base64";
$header .= "\n";
$header .= "Content-Disposition: attachment; filename=".$nameLebenslauf;
$header .= "\n\n";
$header .= getFilecontent($nameLebenslauf);
$header .= "\n";
$header .= "--".$boundary;
$header .= "\n";
$header .= "Content-Type: ".$mimetypeBild."; name=".$nameBild;
$header .= "\n";
$header .= "Content-Transfer-Encoding: base64";
$header .= "\n";
$header .= "Content-Disposition: attachment; filename=".$nameBild;
$header .= "\n\n";
$header .= getFilecontent($nameBild);
$header .= "\n";
$header .= "--".$boundary;
$header .= "\n";
$header .= "Content-Type: ".$mimetypeZeugnis."; name=".$nameZeugnis;
$header .= "\n";
$header .= "Content-Transfer-Encoding: base64";
$header .= "\n";
$header .= "Content-Disposition: attachment; filename=".$nameZeugnis;
$header .= "\n\n";
$header .= getFilecontent($nameZeugnis);
$header .= "\n";
$header .= "--".$boundary;
// und weg mit der mail
if(mail($mailto, $betreff, $mailBody, $header))
[...]
...zur Zeit außer Betrieb...
Ich sehe soweit kein Fehler. Wenn Du dir den ganzen Mail Krams erspraen willst und sicher gehen willst, dass die Mails nicht so leicht als Spam eingeordnet werden, nutzte Phpmailer
Hui - das ging aber fix! Es scheinen sich noch mehr Leute sonntags morgens zu langweilen
Vielen Dank für die Antwort. Das Ganze funktioniert auch eigentlich sehr gut - sieht man davon ab, das der Text aus den Formfeldern nur in der Datei angehängt wird, was mich ein wenig nervt. Daher wüsse ich gerne, wie das umschiffen kann. Mir ist jetzt aufgefallen, dass in meinem Webmailer und Thunderbird die Mail ganz normal wie gewohnt angezeigt wird. Ist es evtl ein Outlook-spezifisches Problem?
...zur Zeit außer Betrieb...
Hallo nochmal!
Hab das Problem jetzt behoben. Allerdings hab ich jetzt 1-2 Problemchen mehr. Und zwar werden beim anhängen von 2 Attachments beide übertragen. Hänge ich aber 3 Dateien an, lädt er zwar alle auf den Server und hängt alle an die Mail an, aber beim abrufen der Mail mit Outlook unterschlägt er den Letzten. Komisch ist auch, dass er, rufe ich die Mail mit dem Thunderbird ab, die zweite unterschlägt.
Der Code sieht jetzt wie folgt aus:
Zum testen, hab ich die Geschichte mal hochgeladen:PHP-Code:<?php
// Status-Array
// Index [0] fuer Debugausgaben
$status = array(array());
echo "<pre>";
print_r($_FILES);
echo "</pre><p> </p>";
// Basisangaben
$betreff = "[HP-Mailer] BEWERBUNG";
// $mailto = "tech@digitalbiz.de";
// Fuer Entwicklung
$mailto = $_POST['mailto'];
// Mailbody
$mailBody = "
BEWERBUNG\n=========================\n
Persoenliche Daten:
--------------------
Name:\t\t\t".$_POST['name']."
Vorname:\t\t".$_POST['vorname']."
Strasse,Nr:\t\t".$_POST['strasse']." ".$_POST['nr']."
Plz Ort:\t\t".$_POST['plz']." ".$_POST['ort']."
Telefon:\t\t".$_POST['telefon']."
EMail:\t\t".$_POST['email']."
Geburtsdatum:\t".$_POST['geburtsdatum']."
Nationalitaet:\t".$_POST['nationalitaet']."
\n
Bewerbung als:\t".$_POST['position']."
bev. Einsatzort:\t".$_POST['einsatzort']."
Arbeitszeit:\t".$_POST['arbeitszeit']."
Eintrittstermin:\tfruehestens ab ".$_POST['eintritt']."
\n
Freitext:\t".$_POST['nachricht']."
\n
angehaengte Dateien: \n";
// Header erzeugen
$header = "From: ".$_POST['vorname']. " " .$_POST['name']." <".$_POST['email'].">";
// Falls keine Anhaenge, mail normal versenden:
if(!empty($_FILES['lebenslauf']['name']) || !empty($_FILES['bild']['name']) || !empty($_FILES['zeugnis']['name'])){
// Boundary generieren
$boundary = md5(uniqid(time()));
$header .= "\n";
$header .= "MIME-Version: 1.0";
$header .= "\n";
$header .= "Content-Type: multipart/mixed; boundary=".$boundary;
$header .= "\n\n";
$header .= "This is a multi-part Message in MIME format";
$header .= "\n";
$header .= "--".$boundary;
$header .= "\n";
$header .= "Content-Type: text/plain";
$header .= "Content-Transfer-Encoding: 8bit";
$header .= "\n\n";
$header .= $mailBody;
$header .= "\n";
$header .= "--".$boundary;
}
// Lebenslauf abhandeln
if(!empty($_FILES['lebenslauf']['name'])){
// Lebenslauf auf Server kopieren
$nameLebenslauf = $_FILES['lebenslauf']['name'];
$tempNameLebenslauf = $_FILES['lebenslauf']['tmp_name'];
$mimetypeLebenslauf = getMimetype($nameLebenslauf);
if(@copy($tempNameLebenslauf,"uploads/".$nameLebenslauf)){
$status[0][0]= "Lebenslauf erfolgreich auf Server kopiert:".$nameLebenslauf."(tempName:".$tempNameLebenslauf.")";
}else{
$status[0][0]= "Lebenslauf nicht auf Server kopiert";
}
// Header fuer Lebenslauf abhandeln
$header .= "\n";
$header .= "Content-Type: ".$mimetypeLebenslauf."; name=".$nameLebenslauf;
$header .= "\n";
$header .= "Content-Transfer-Encoding: base64";
$header .= "\n";
$header .= "Content-Disposition: attachment; filename=".$nameLebenslauf;
$header .= "\n\n";
$header .= getFilecontent($nameLebenslauf);
$header .= "\n";
$header .= "--".$boundary;
// Dateiname an Email-Text anhaengen
$mailBody .= $nameLebenslauf . "\n";
}else{
$status[0][0]= "Lebenslauf nicht auf Server kopiert - keine Datei uebergeben";
}
// Bild abhandeln
if(!empty($_FILES['bild']['name'])){
// Bild auf Server kopieren
$nameBild = $_FILES['bild']['name'];
$tempNameBild = $_FILES['bild']['tmp_name'];
$mimetypeBild = getMimetype($nameBild);
if(@copy($tempNameBild,"uploads/".$nameBild)){
$status[0][1]= "Bild erfolgreich auf Server kopiert:".$nameBild."(tempName:".$tempNameBild.")";
}else{
$status[0][1]= "Bild nicht auf Server kopiert";
}
// Header fuer Bild erzeugen
$header .= "\n";
$header .= "Content-Type: ".$mimetypeBild."; name=".$nameBild;
$header .= "\n";
$header .= "Content-Transfer-Encoding: base64";
$header .= "\n";
$header .= "Content-Disposition: attachment; filename=".$nameBild;
$header .= "\n\n";
$header .= getFilecontent($nameBild);
$header .= "\n";
$header .= "--".$boundary;
// Dateiname an Email-Text anhaengen
$mailBody .= $nameBild . "\n";
}else{
$status[0][1]= "Bild nicht auf Server kopiert - keine Datei uebergeben";
}
// Zeugnis abhandeln
if(!empty($_FILES['zeugnis']['name'])){
// Zeugnis auf Server kopieren
echo "<h1>DRIN!</h1>";
$nameZeugnis = $_FILES['zeugnis']['name'];
$tempNameZeugnis = $_FILES['zeugnis']['tmp_name'];
$mimetypeZeugnis = getMimetype($nameZeugnis);
if(copy($tempNameZeugnis,"uploads/".$nameZeugnis)){
$status[0][2]= "Zeugnis erfolgreich auf Server kopiert:".$nameZeugnis."(tempName:".$tempNameZeugnis.")";
}else{
$status[0][2]= "Zeugnis nicht auf Server kopiert";
}
// Header fuer Zeugnis erzeugen
$header .= "\n";
$header .= "Content-Type: ".$mimetypeZeugnis."; name=".$nameZeugnis;
$header .= "\n";
$header .= "Content-Transfer-Encoding: base64";
$header .= "\n";
$header .= "Content-Disposition: attachment; filename=".$nameZeugnis;
$header .= "\n\n";
$header .= getFilecontent($nameZeugnis);
$header .= "\n";
$header .= "--".$boundary;
// Dateiname an Email-Text anhaengen
$mailBody .= $nameZeugnis . "\n";
}else{
$status[0][2]= "Zeugnis nicht auf Server kopiert - keine Datei übergeben";
}
// Datum und Zeit an Email-Text anhaengen
$mailBody .= "\n\n\nEmpfangen am ".date("d.m.Y")." um ".date("H:i:s")."
von ".$_SERVER['REMOTE_ADDR']."
\n
=== ENDE ===";
$status[0][4] = "BODYTEXT\n".$mailBody;
// und weg mit der mail
if(mail($mailto, $betreff, $mailBody, $header)){
$status[1][0] = "Mail erfolgreich versendet!";
$status[0][3] = "<pre>".$header."</pre>";
}
else {
$status[1][0] = "Mail konnte nicht verschickt werden!";
$status[0][3] = "<pre>".$header."</pre>";
}
for($i = 0; $i < count($status); $i++){
echo "<h1>Index ".$i."</h1>";
for($j = 0; $j < count($status[$i]); $j++){
echo "<h3>Position ".$i.".".$j."</h3><pre>".$status[$i][$j]."</pre>";
}
}
// FUNKTIONEN
// Mimetyp der Datei ermitteln
function getMimetype($filename){
$endung = explode(".",$filename);
$endung = $endung[count($endung)-1];
switch($endung){
case "doc" :
$mimeType = "application/msword";
break;
case "xls" :
$mimeType = "application/msexcel";
break;
case "pdf" :
$mimeType = "application/pdf";
break;
case "rtf" :
$mimeType = "application/rtf";
break;
case "txt" :
$mimeType = "text/plain";
break;
case "zip" :
$mimeType = "application/zip";
break;
case "gif" :
$mimeType = "image/gif";
break;
case "gif" :
$mimeType = "image/gif";
break;
case "jpeg" :
$mimeType = "image/jpeg";
break;
case "jpg" :
$mimeType = "image/jpeg";
break;
case "tif" :
$mimeType = "image/tiff";
break;
case "tiff" :
$mimeType = "image/tiff";
break;
default:
$mimeType = "multipart/form-data";
}
return $mimeType;
}
// Gibt Datei als 64-kodierter Text zurueck
function getFilecontent($filename){
if(file_exists("uploads/".$filename)){
$dateiInhalt = fread(fopen("uploads/".$filename, "r"), filesize("uploads/".$filename));
$status[0][5] = "-1";
return chunk_split(base64_encode($dateiInhalt));
}
else{
$status[0][5] = "Datei ".$filename." nicht vorhanden.";
}
}
?>
>> http://www.projekte.digitalbiz.de/di...el_de/jobs.htm
Wäre toll, wenn Ihr mir hier auch weiterhelfen könntet.
Vielen Dank!
...zur Zeit außer Betrieb...
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)