[PHP] Umlaute im Betreff für E-MAil *UPDATE da andere PROB*

Dieses Thema im Forum "Webentwicklung" wurde erstellt von ROMSKY, 24. August 2009 .

  1. 24. August 2009
    Umlaute im Betreff für E-MAil *UPDATE da andere PROB*

    Hi,

    ich habe ein PHP MAiler welcher Daten von Flash bezieht. Die Nachricht wird korrekt übertragen, inkl. Umlaute. Wenn aber im Betreff ein Umlaut ist wird dieser mit "XX" angezeigt.

    Wer weiss da rat?
     
  2. 25. August 2009
    AW: Umlaute im Betreff für E-MAil

    hi,

    ich geh mal davon aus, das du die daten per

    loadVariables("sendmail.php","","POST");

    versendest.

    mach mal aus loadVariables -> getURL (target="_blank")
    und seh dir mal an was wie ankommt (natürlich mit echo).
     
  3. 25. August 2009
    AW: Umlaute im Betreff für E-MAil

    Ich habe mich da schon etwas eingelesen. Die Mail wird im PHP versendet UTF-8 codiert.
    Der Inhalt (Message usw.) werden korrekt inkl. Umlaute usw. im Mailprogramm angezeigt.

    Der Betreff wird aber völlig anders von E-Mail Programmen interpretiert, sprich keine HTML Interpretation usw.
     
  4. 25. August 2009
    AW: Umlaute im Betreff für E-MAil

    dann mußt du wohl in uft-8 umwandeln.

    PHP:
    function  utf8String  ( $string ){
        return 
    html_entity_decode  ( htmlentities ( trim ( $string )), ENT_QUOTES , 'UTF-8' );
    }
    probier das mal
     
  5. 25. August 2009
    AW: Umlaute im Betreff für E-MAil

    Wie gesagt sollte nicht klappen, html_entity_encode bringt was für den Inhalt. Der Header bzw. subject wird aber nicht als HTML interpretiert, daher ist eine HTML-Encodierung leider ohne Erfolg.

    Oder verstehe ich dich falsch?
     
  6. 26. August 2009
    AW: Umlaute im Betreff für E-MAil

    hast du das überhaupt mal probiert?

    und warum eigentlich utf-8?
    die mail ist doch für dich, da sollte iso-8859-1 doch ausreichen.
     
  7. 26. August 2009
    AW: Umlaute im Betreff für E-MAil

    Das mit ISO-8859-1 auch schon getestet, der Inhalt der Mail wird imemr korrekt angezigt, Der BEtreff wird aber mit Umlauten immer fehlerhaft angezeigt.

    aus "für" wird dann "fXXr"
     
  8. 26. August 2009
    AW: Umlaute im Betreff für E-MAil

    ok, fehler suchen.

    hast du getURL schon gemacht.

    was zeigt er dir für den betreff an?
    ggf. auch mal den quellcode ansehen.
     
  9. 26. August 2009
    AW: Umlaute im Betreff für E-MAil

    derzeitiger PhP-Code das Mailers:


    <?php
    $name = $_POST["name"];
    $vorname = $_POST["vorname"];
    $email = $_POST["mail"];
    $strasse = $_POST["strasse"];
    $ort = $_POST["ort"];
    $gesamt = $_POST["gesamt"];
    $kunde = $_POST["kunde"];
    $subjectmsg = "Bestellung Kundenbilder des Kunden ".$kunde." abgesendet von ".$name." , ".$vorname." mit einer Summe von ".$gesamt;
    $msg0 = $_POST["item"];
    $msg1 = nl2br($msg0);
    $msg = ereg_replace("<br />","\n",$msg1);
    $phone = "007";
    $date = date("d/m/y H:i:s");
    $contentmsg = "Datum: ".$date. "\n\nKunde: ".$kunde."\nSumme: ".$gesamt."\n\nName: ".$name." , ".$vorname. "\nStrasse: ".$strasse."\nOrt: ".$ort."\nEmail: ".$email."\nTelefonnummer: ".$phone. "\n\nBestelldaten: \n".$msg;

    $to="info@website.com";
    $subject="".$subjectmsg."";

    $header = "From: ".$email."\n";
    $header .= "MIME-Version: 1.0\r\n"."Content-type: text/plain; charset=utf-8\r\n";
    $header .= "Content-Type: text/plain;\n";
    $header .= "\tcharset=\"iso-8859-1\"\n";
    $header .= "Content-Transfer-Encoding: quoted-printable\n\n";



    mail($to,$subject,$contentmsg,$header);


    ?>
     
  10. 26. August 2009
    AW: Umlaute im Betreff für E-MAil

    schon mit iconv rumprobiert? utf8 <-> latin1 etc. ?
    PHP: iconv - Manual

    das liegt übrigens auch teilweise am mail client, manche sind schlau genug und erkennen den korrekten zeichensatz automatisch

    PHP:
    ...
    $subjectmsg   iconv ( "UTF-8" "ISO-8859-1" $subjectmsg );
    ...
     
  11. 26. August 2009
    AW: Umlaute im Betreff für E-MAil

    trägt jetzt nicht direkt zur problemlösung bei, jedoch:

    iso-8859-1 kennt keine eurozeichen, ist somit nicht unbedingt "ausreichend" (iso-8859-15 hingegen schon)
     
  12. 26. August 2009
    AW: Umlaute im Betreff für E-MAil

    Hmm, ich habe jetzt ein noch viel komischeres Problem. Das mit den umlauten im Betreff lässt sich einfach mit "AE" statt "ä" usw. umgehen.

    Ich verstehe aber folgendes nicht:
    Ein bestellvorgang wird per mail-Befehl an mich gesendet:
    mail($to,$subject,$contentmsg,$header);

    Nun möchte ich dem Kunden auch eine Bestellbestätigung inkl. der Positionen senden:
    mail($email,$ssubject,$recepttxt,$header2);

    Die Bestätigung kommt auch an, komischerweise werden dort aber weder umlaute noch Zeilenümbrüche interpretiert.

    sprich die Mail an mich ist: inkl. Umlaute, korrekte Zeilenumbrüche usw.

    Die Mail an den Kunden, weder Umlaute, noch korrekte Zeilenumbrüche. Wie definiere ich für den 2. Mailbefehl headerinformationen?

    Danke mal im VOraus
     
  13. 28. August 2009
    AW: Umlaute im Betreff für E-MAil *UPDATE da andere PROB*

    Onip.... keine Idee?
     
  14. 28. August 2009
    AW: Umlaute im Betreff für E-MAil *UPDATE da andere PROB*

    kannst du code schnippsel von deiner fla zu verfügung stellen?
    schmeiß alles aus flash raus, das nur ein kleiner dummy übrig bleibt.
    damit kann man mal etwas testen.

    ist das eigentlich ne dynamische anwendung, sprich kommen die daten von ner datenbank oder sowas?
     
  15. 28. August 2009
    AW: Umlaute im Betreff für E-MAil *UPDATE da andere PROB*

    Wie gesagt um den Flash Part geht es nicht, hier der Code:


    $name = $_POST["name"];
    $vorname = $_POST["vorname"];
    $email = $_POST["mail"];
    $strasse = $_POST["strasse"];
    $ort = $_POST["ort"];
    $gesamt = $_POST["gesamt"];
    $kunde = $_POST["kunde"];
    $subjectmsg = "Bestellung Kundenbilder des Kunden ".$kunde." abgesendet von ".$name." , ".$vorname." mit einer Summe von ".$gesamt;
    $subjectmsg2 = "Ihre Bestellung";
    $msg0 = $_POST["item"];
    $msg1 = nl2br($msg0);
    $msg = ereg_replace("<br />","\n",$msg1);
    $phone = "007";
    $date = date("d/m/y H:i:s");


    $contentmsg = "Datum: ".$date. "\nKunde: ".$kunde."\nSumme;
    $contentmsg2 = "Folgende Bestelldaten sind von Ihnen bei uns eingegangen;


    // Mail setup
    $to="my-email@web.de";
    $to2= $email;


    $subject="".$subjectmsg."";
    $subject2="".$subjectmsg2."";


    $header = "From: ".$email."\n";
    $header .= "MIME-Version: 1.0\r\n"."Content-type: text/plain; charset=utf-8\r\n";
    $header .= "Content-Type: text/plain;\n";
    $header .= "\tcharset=\"iso-8859-2\"\n";
    $header .= "Content-Transfer-Encoding: quoted-printable\n\n";



    $header2 = "From: ".$to."\n";



    mail($to,$subject,$contentmsg,$header);
    mail($to2,$subject2,$contentmsg2,$header2);



    ?>


    So mein Problem:
    mail($to,$subject,$contentmsg,$header); <----------- kommt korrekt inkl. Zeilenumbruch und Umaluten an
    mail($to2,$subject2,$contentmsg2,$header2);<--------- Umlaute und Zeilenumbrüche werden flasch interpretiert/angezeigt
     
  16. 31. August 2009
    AW: Umlaute im Betreff für E-MAil *UPDATE da andere PROB*

    du übergibst header2 keinen Mime, Content-type, charset usw.
    nur das from.
    warum eingentlich 2x charset?

    was hälst du davon ne kleine function zum mailen zu machen?
    hier mal ne kleine die ich ab und zu nutze.

    PHP:
    function  sendMail  ( $to $subject $message $fromname $fromemail ){
        
    $headers   "MIME-Version: 1.0\r\n" ;
        
    $headers  .=  "X-Mailer: PHP\r\n"
        
    $headers  .=  "Content-type: text/plain; charset=iso-8859-1\r\n" ;
        
    $headers  .=  "From: " . $fromname . " <" . $fromemail . ">\r\n" ;
        
    $headers  .=  "Content-Transfer-Encoding: 8bit\r\n" ;
        
    $headers  .=  "X-Priority: 3\r\n" ;
        
    $headers  .=  "X-MSMail-Priority: Normal\r\n" ;
        
    $headers  .=  "Return-Path: <" . $to . ">\r\n" ;
        
        if (@
    mail ( $to $subject $message $headers )){
            return 
    true ;
        }
        return 
    false ;
    }
    if (
    sendMail  ( 'mailan@domain.de' 'Betreff' $msg htmlspecialchars ( $_POST [ 'name' ]),  htmlspecialchars ( $_POST [ 'email' ]))){
        echo 
    'Mail versendet' ;
    }else {
        echo 
    'Mail nicht versendet' ;
    }
    // edit
    übergib von flash aus deine daten mit escape()
    PHP:
    sendmail . php ? name = escape ( form_name )
     
  17. 31. August 2009
    AW: Umlaute im Betreff für E-MAil *UPDATE da andere PROB*

    wie siehts denn mit dem befehl hier aus:

    PHP:
    $mail_text = utf8_decode ( $mail_text );
    benutze den immer und funktioniert wunderbar
     
  18. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.