+ Antworten
Ergebnis 1 bis 4 von 4

Thema: PHP] Text einer mit mail() verschickten Email "normal" anzeigen.

  1. #1
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289

    PHP] Text einer mit mail() verschickten Email "normal" anzeigen.

    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:
    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)) 
    [...] 
    Vielen Dank und einen schönen Sonntag!
    ...zur Zeit außer Betrieb...

  2. #2
    TP-Supporter [jacky] ist auf einem guten Weg
    Registriert seit
    Dec 2005
    Beiträge
    455
    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

  3. #3
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289
    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...

  4. #4
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289
    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:
    PHP-Code:
    <?php

    // Status-Array
    // Index [0] fuer Debugausgaben
        
    $status = array(array());

    echo 
    "<pre>";
    print_r($_FILES);
    echo 
    "</pre><p>&nbsp;</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.";
            }
        }
    ?>
    Zum testen, hab ich die Geschichte mal hochgeladen:
    >> 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...

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51