Ankündigung

Einklappen
Keine Ankündigung bisher.

E-Mail Umlautproblem ab bestimmter Stelle

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • E-Mail Umlautproblem ab bestimmter Stelle

    Hallo,

    ich habe ein Script von jemanden übernommen was noch einige Fehler enthält. Dort werden zB auch mails gesendet. Einige mails sind von den Umlauten ok andere nicht. Ich habe versucht das alles anzupassen aber bei einer mail bekomme ich nach der horizontalen Linie immer noch alles falsch ausgegeben.
    Ich bin Anfänger und habe mich am vorhandenen Code gerichtet und überall utf8_decode eingebaut. Da die anderen mails keine Umlautprobleme haben und dort das dort auch so ist habe ich es entsprechend angepasst

    ich finde den Fehler nicht warum nach der Linie noch alles falsch ist.
    Weitere utf8_decode haben nichts gebracht

    hier der Ausschnitt

    PHP-Code:
                $sBody.= utf8_decode($oHotel -> sSalesPersonName).",<br>";
                
    $sBody.= utf8_decode($_REQUEST["u_sEMailBodyTop"])."\n";
                
    $sBody.= utf8_decode($oHotel -> aHotelname[$sLangOffer])."<br>";
                
    $sBody.= utf8_decode($oHotel ->aAddress[$sLangOffer])."<br><br>";
                if (
    $oKey->sState == C_OFFER_ACCEPTED)
                    
    $sBody.= "<hr>".utf8_decode($_REQUEST["u_sOfferDetails"])."<hr><br>";
                
    $sEmailBodyBottom utf8_decode($_REQUEST["u_sEMailBodyBottom"]);
                
    $sSignatureutf8_decode($_REQUEST["u_sSignature"]);
                
    $sEmailBodyBottomstr_replace("Weiteres Vorgehen von uns:""<b>Weiteres Vorgehen von uns</b>"$sEmailBodyBottom); 
                
    $sEmailBodyBottomstr_replace("Weiteres Vorgehen Hotel:""<b>Weiteres Vorgehen Hotel</b>"$sEmailBodyBottom); 
                
    $sEmailBodyBottomstr_replace("Next Steps von uns:""<b>Next Steps von uns:</b>"$sEmailBodyBottom); 
                
    $sEmailBodyBottomstr_replace("Next Steps Hotel:""<b>Next Steps Hotel:</b>"$sEmailBodyBottom); 

                
    $sBody.= utf8_decode($sEmailBodyBottom)."<br><br>";
                
    $sBody.= utf8_decode($sSignature)."<br>";
                
                
    $sBody "<div style=\"font: 12px Arial\">".$sBody."</div>"


  • #2
    Hi,

    ich habe ein Script von jemanden übernommen was noch einige Fehler enthält. Dort werden zB auch mails gesendet. Einige mails sind von den Umlauten ok andere nicht. Ich habe versucht das alles anzupassen aber bei einer mail bekomme ich nach der horizontalen Linie immer noch alles falsch ausgegeben.
    Ich bin Anfänger und habe mich am vorhandenen Code gerichtet und überall utf8_decode eingebaut. Da die anderen mails keine Umlautprobleme haben und dort das dort auch so ist habe ich es entsprechend angepasst

    ich finde den Fehler nicht warum nach der Linie noch alles falsch ist.
    Weitere utf8_decode haben nichts gebracht
    ..ganz einfach: weil du (mit ziemlich hoher Wahrscheinlichkeit) keine Mailerklasse verwendest. Schau Dir mal Swiftmailer oder PHPMailer an.

    statt

    PHP-Code:
    $_REQUEST 
    verwendet man heutzutage auch $_GET oder $_POST (je nachdem).

    mfg wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      danke für die Antwort aber kann ich es so nicht fixen?

      Kommentar


      • #4
        Mach es neu, geht vermutlich schneller und dann ist sauber

        http://php-de.github.io/jumpto/mail-class/

        Und ich hoffe du prüfst die $_REQUEST Werte noch vorher bevor du die so von "aussen" übernimmst, das kann schnell missbraucht werden.

        http://php-de.github.io/#security
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          hmnn als Anfänger kann ich da nicht das ganze umschreiben - ich denke das überschreitet im Moment meine Fähigkeiten. Im ganzen System werden ja dutzende diverse Mails verschickt - nur eben diese machen Probleme mit den Umlauten - die anderen nicht - da sind alle Umlaute korrekt.

          Ich dachte ich kann das einfacher ändern so das der fehler nicht auftritt. So habe ich ja die anderen Scripte mit dem verglichen und gesehen das da einige utf8_decode Anweisungen fehlten. Aber alles nach <hr> wird immer noch mit Umlautproblemem dargestellt

          Gibts wirklich keine andere kleine Änderung die mir das fixt?

          Kommentar


          • #6
            Könnte von euch Profis noch einmal jemand schauen ob man da ohne größeren Aufwand was machen könnte ohne alles neu zu machen. Wie gesagt bis zum <hr> geht alles auch korrekt aber nach </hr> ist alles falsch und ich weiß nicht warum.

            Das wäre super nett von euch

            Kommentar


            • #7
              Einige mails sind von den Umlauten ok andere nicht.
              Vermutlich liegt es in dem Moment an der Datenquelle, denn vor dem HR kommen die Daten vorwiegend aus einem Objekt, während die Daten nachträglich aus dem $_REQUEST ( beachte dazu bitte, was wolf29 und hausl geschrieben haben ), was durchaus anders codiert (Zeichensatzkodierung) sein kann.

              Das ganze utf8_decode-Gefummel ist im übrigen der beste Grund, das neu zu machen oder machen zu lassen.
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #8
                nun ja das würde ich gerne aber als Anfänger sind 440 Zeilen Code neu zu machen schon heftig - und das ist nur die eine Datei da sind noch zig andere. Ich habe aber in einer anderen Datei (common.inc) folgendes gefunden was definitiv auch damit zu tun hat.

                Problem wenn ich den iso Code abändere auf ....-15 kommen trotzdem falsche Zeichen. Wenn ich dort UTF-8 schreibe auch aber jedes mal andere. Das Eurozeichen (siehe ganz unten) macht mir auch Ärger weil es nicht angezeigt wird

                PHP-Code:
                function mail_attach($Empfaenger$Betreff$text$Header$DateinameAnhang)
                {
                  
                $h fopen("./manual/".$DateinameAnhang'rb');
                  
                $filecontents fread($hfilesize("./manual/".$DateinameAnhang));

                  
                $Trenner md5(uniqid(time()));

                //  $Header = "From: meinname@meinedomain.de\n";
                  
                $Header .= "MIME-Version: 1.0\n";
                  
                $Header .= "Content-Type: multipart/mixed; boundary=$Trenner\n";

                //  $text = "This is a multi-part message in MIME format\n";
                  
                $text .= "\n--$Trenner\n";
                  
                $text .= "Content-Type: text/html;  charset=iso-8859-1\n";
                  
                $text .= "Content-Transfer-Encoding: 8bit\n\n";
                  
                $text .= $text."\n";
                  
                $text .= "--$Trenner\n";
                  
                $text .= "Content-Type: application/pdf; name=$DateinameAnhang\n";
                  
                $text .= "Content-Transfer-Encoding: base64\n";
                  
                $text .= "Content-Disposition: attachment; ".
                           
                "filename=$DateinameAnhang\n\n";
                  
                $text .= chunk_split(base64_encode($filecontents));
                  
                $text .= "\n";
                  
                $text .= "--$Trenner--";

                  
                mail($Empfaenger$Betreff$text$Header);
                }

                function 
                html_mail_no_attach($Empfaenger$Betreff$text$Header)
                {
                  
                $Header_top "MIME-Version: 1.0\n";
                  
                $Header_top .= "Content-Type: text/html; charset=iso-8859-1\n";
                  
                $Header $Header_top.$Header;
                  
                  
                mail($Empfaenger$Betreff$text$Header);

                PHP-Code:
                function getCharSet($sLanguage)
                {
                    global 
                $c_sCharSet;

                    if (
                strlen($sLanguage) > 0)
                        return 
                $c_sCharSet[$sLanguage];
                    else
                        return 
                "iso-8859-1";


                PHP-Code:
                function ConvertUTF8($sCharset$sString)
                {
                    
                $sResult $sString;

                    if (
                $sCharset != "utf-8")
                        
                $sResult utf8_encode($sString);

                    return (
                $sResult);


                PHP-Code:
                function getCurrencyString ($sCurrency)
                {
                    
                $aArgs func_get_args();
                    
                protocolInFunc ("getCurrencyString",$aArgs,3);

                    
                $sResult "";

                    switch (
                $sCurrency)
                    {
                        case 
                "EUR":
                            
                $sResult "&euro;";
                        break;
                        case 
                "USD":
                            
                $sResult "$";
                        break;
                        case 
                "JPY":
                            
                $sResult "&yen;";
                        break;
                        default:
                            
                $sResult $sCurrency;
                        break;
                    }

                    return (
                $sResult);

                Kommentar


                • #9
                  Zitat von nikosch
                  Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                  Kommentar


                  • #10
                    raff das nicht. Das heisst alles neu auch die Klassen. Hmn ich de ke dann muss ich es lassen - schade. Das wird mir Zuviel. Ich habe jetzt das mit den Eurozeichen so gelöst:

                    es wird halt jetzt nur EUR angezeigt anstatt €
                    PHP-Code:
                    function getCurrencyString ($sCurrency)
                    {
                        
                    $aArgs func_get_args();
                        
                    protocolInFunc ("getCurrencyString",$aArgs,3);

                        
                    $sResult "";

                        switch (
                    $sCurrency)
                        {
                            case 
                    "EUR":
                                
                    $sResult "EUR";
                            break;
                            case 
                    "USD":
                                
                    $sResult "$";
                            break;
                            case 
                    "JPY":
                                
                    $sResult "&yen;";
                            break;
                            default:
                                
                    $sResult $sCurrency;
                            break;
                        }

                        return (
                    $sResult);

                    warum in der Mail jetzt ausgerechnet die $_REQUEST Dinger nicht umgewabndelt werden ist mir ein rätsel

                    Kommentar


                    • #11
                      Evtl. hat der $_REQUEST bereits das korrekte Encoding?!
                      Dan bräuchtest Du da kein utf8_decode o.ä.

                      Das sind aber Dinge, die Du herausfinden musst, das kann Dir hier keiner beantworten...
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar


                      • #12
                        also wie gesagt ich pack's nicht das alles neu zu machen also habe ich nochmal gefummelt und folgendes rausgefunden
                        Wenn ich diese Zeile aus kommentiere ist alles richtig!!!

                        PHP-Code:
                        $sBody "<div style=\"font: 12px Arial\">".$sBody."</div>"
                        mit dieser abgeänderten zeile schein es zu ngehen also muss es am div leigen - egal mein Problem ist jetzt das die größe nicht stimmt
                        PHP-Code:
                        $sBody "<font face=\"arial\" size=\"12\">".$sBody."</font>"
                        in Outlook ist die Schrift riesengroß

                        allerdings ist die Schrift in der Mail jetzt bescheiden - wisst ihr hier einen Tipp wie ich das ändern kann. Übrigens in dieses besagten Zeile hilft decode nichts - da passiert nichts.

                        Andere Frage das einzige was noch falsch ist ist das Eurozeichen
                        das muss hier in der function liegen - aber ein decode hilft auch hier nichts
                        PHP-Code:
                        function getCurrencyString ($sCurrency)
                        {
                            
                        $aArgs func_get_args();
                            
                        protocolInFunc ("getCurrencyString",$aArgs,3);

                            
                        $sResult "";

                            switch (
                        $sCurrency)
                            {
                                case 
                        "EUR":
                                    
                        $sResult "&euro;";
                                break;
                                case 
                        "USD":
                                    
                        $sResult "$";
                                break;
                                case 
                        "JPY":
                                    
                        $sResult "&yen;";
                                break;
                                default:
                                    
                        $sResult utf8_decode($sCurrency);
                                break;
                            }

                            return (
                        $sResult);

                        Kommentar

                        Lädt...
                        X