Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHPMailer und Umlaute

Einklappen

Unconfigured Ad Widget

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

  • Sirius
    hat ein Thema erstellt [Erledigt] PHPMailer und Umlaute.

    [Erledigt] PHPMailer und Umlaute

    Hallo,

    ich weiß zu dem Thema gibt es hier im Forum schon einige Threads, aber bisher konnte mir keiner meine Frage baentworten....

    also ich hab ein "PHP"- Mail Script mit dem ich eine HTML Mail und die dazu passende Text alternative verschicke (mit PHPMailer).

    Das Script läuft soweit wie es soll.

    Mein Problem ist das die Umlaute in der Text Alternative nicht richtig dargestellt werden.

    Das hab ich im PHPMailer eingetragen:

    PHP-Code:
    public $CharSet           'iso-8859-1';
    public 
    $ContentType       'text/plain';
    public 
    $Encoding          'quoted-printable'
    Anrede, Name und Vorname kommen aus einer Datenbank und da werden auch die Umlaute in den Namen richtig dargestellt, beim restlichen Alternativtext sieht das z.B. so aus: Ÿbrigens, mšglich

    wenn ich nun iso-8859-1 in utf-8 ändere, werden gar keine Umlaute angezeigt : brigens, mglich

    und die Namen aus der Datenbank werden auch nicht mehr richtig angezeigt, statt der Umlaute erscheinen dann schwarze vierecke....

    Was muss ich denn nun angeben damit es funktioniert?

    Oder muss ich die Umlaute auch im Alternativtext irgendwie codieren?

  • Sirius
    antwortet
    Zitat von nikosch Beitrag anzeigen
    Und ich hatte explizit und alleinstehend geschrieben:
    ja und ich hab's überlesen gehabt, tut mir leid...

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Und ich hatte explizit und alleinstehend geschrieben:
    Es heißt SET NAMES

    Einen Kommentar schreiben:


  • Sirius
    antwortet
    Das ist doch falsch !
    jaaaa daran hat's gelegen Danke,danke,danke,danke!

    Und: Ja ich lese mir die Antworten richtig durch, aber das hier
    PHP-Code:
    mysql_query("SET NAME 'utf8'"); 
    hatte ich von BlackScorp kopiert und ins Script eingefügt in der Überzeugung so kann ich mich nicht vertippen...naja und so weiter halt....

    Also danke nochmal an alle und ganz besonders an Koala, für die viele Geduld mit mir

    Einen Kommentar schreiben:


  • Koala
    antwortet
    mysql_query("SET NAME 'utf8'");
    Das ist doch falsch !

    Liest Du Dir denn die Antworten hier auch richtig durch ?

    SET NAMES

    Einen Kommentar schreiben:


  • Sirius
    antwortet
    wie meinen ? was ist der Unterschied zwischen Name und Text ???
    Die Namen kommen aus der Datenbank (also auch die Umlaute in den Namen)
    und der Text steht halt direkt in der Mail (auch mit Umlauten).

    Poste mal den mail-header.
    Web.de:

    Code:
    Received: from [00.000.00.00] (helo=xxx.xx-xx.net)
    by mx00.web.de with esmtp (WEB.DE 4.110 #4)
    id xxx
    for xxxx_xx@web.de; Mon, 29 Mar 2010 17:03:32 +0200
    X-KSD: < xxxx_xx@web.de>
    Received: from www.xxxxxx.de (xxx.xx-xx.net [00.000.00.00])
    (authenticated bits=0)
    by xxx.xx-xx.net (9.14.2/9.14.2) with ESMTP id o2TF3evM005501
    for < xxxx_xx@web.de>; Mon, 29 Mar 2010 17:03:40 +0200
    Date: Mon, 29 Mar 2010 17:03:40 +0200
    To: xxxx_xx@web.de
    From: "xxx.de" <xxx@xxxx.de>
    Subject:Webmail
    Message-ID: <12354@www.xxx.de>
    X-Priority: 3
    X-Mailer: PHPMailer 5.1 (phpmailer.sourceforge.net)
    MIME-Version: 1.0
    Return-Path: xxx@xxx.de
    Content-Type: text/html; charset="iso-8859-15"
    Content-Transfer-Encoding: 8bit
    und Mail:

    Code:
    Return-Path: <xxx@xxx.de>
    Received: from xxx-xxxx.de ([00.000.00.00])
       by KEN (0.00.00-v000000) with POP3
       ; Mon, 29 Mar 2010 17:04:03 +0200
    Received: from www.xxx.de (xxx.xx-xx.net [00.000.00.00])
       (authenticated bits=0)
       by xxx.xx-xx.net (9.14.2/9.14.2) with ESMTP id o2TF3evL005501
       for <xx@xx-xx.de>; Mon, 29 Mar 2010 17:03:40 +0200
    Date: Mon, 29 Mar 2010 17:03:40 +0200
    From: "xxx.de" <xxx@xxx.de>
    Subject: Webmail
    To: xx@xx-xx.de
    Message-ID: <12354@www.xxx.de>
    Mime-Version: 1.0
    Content-Type: multipart/alternative;
       boundary="12354"
    X-KENRecTime: 126910875043
    X-Priority: 3
    X-Spam-Virus: No
    X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on
    X-Spam-Level: 
    X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED,HTML_MESSAGE
       shortcircuit=no autolearn=disabled version=3.2.5
    X-KSD: <xx@xx-xx.de>
    X-Mailer: PHPMailer 5.1 (phpmailer.sourceforge.net)
    Status: 
    X-AVK-Virus-Check: AVA 00.10000;00000
    
    
    --12354
    Content-Type: text/plain; charset = "utf-8"
    Content-Transfer-Encoding: quoted-printable
    was ist denn die eigentliche HTML-Mail ???
    Naja ich versende eine HTML-Mail und biete dazu eine Text-Alternative an. Mit dem Satz wollte ich nur sagen das da nur PHP-Script + PHPMailer+Datenbank miteinander verknüpft sind

    Wie kommt der html-Code ins php-Script ?
    der kommt da nicht rein, der ist da schon drin

    PHP-Code:
    Poste mal Dein php-Script
    Ok aber ohne HTML-Inhalt und Texte, sonst wird das zu lang....

    PHP-Code:
    <?php
     session_start
    ();   
     
    error_reporting(E_ALL); 
    ini_set('display_errors',true);
    header('Content-type: text/html; charset=utf-8'); 


      
    $maxTime ini_get("max_execution_time") + time() - 3
      
    define ("ZEILENUMBRUCH""\r\n");

                         
    $pfad get_include_path();

                        
                         
    $pfad .= PATH_SEPARATOR '../PHPMailer';
                         
                         
    set_include_path($pfad);
                         require_once 
    'class.phpmailer.php';
                         
    $mail = new PHPMailer();
                         
    $mail -> SMTPDebug PHP_INT_MAX;
                         
    $mail->SetLanguage ("de""../PHPMailer/"); 
                         
                         
    $mail->IsSMTP();
                         
    $mail->Host     "";  
                         
    $mail->SMTPAuth true;
                        
                         
    $mail->Username "";                     
                         
    $mail->Password ""
                         
    $mail->From     "";
                         
    $mail->FromName "";                     
                         
    $mail->Subject  "Webmail";
                          
                         
                     
                         require_once 
    'config.inc.php';
                         
    $verbindung mysql_connect(__CFG_DB_SERVER__CFG_DB_USERNAME__CFG_DB_PASSWORD)
                         or die (
    "keine Verbindung möglich.");
                         
    mysql_select_db("User")
                         or die (
    "Die Datenbank existiert nicht.");   
                         
    mysql_query("SET NAME 'utf8'");
                         
                           
    // Größte ID ermitteln 
                           
    $abfrage "select max(ID) from Webmail";   
                           
    $ergebnis mysql_query ($abfrage);   
                           
    $max mysql_result($ergebnis,0); 
        
                           if (isset(
    $_SESSION['lastID'])) 
                             {
                             
    $lastID $_SESSION['lastID']; 
                             }
                           else 
                             {
                             
    $lastID 0;
                             } 
                                   
                         
    $abfrage "SELECT ID, Anrede, Name, Vorname, Email, Freigeschalten FROM Webmail WHERE Einverstanden = 'ja'"
                                                  
                           if (
    $lastID)     
                                  {
                                  
    $abfrage .= "and ID > $lastID  order by ID ASC"
                                  }
                           else 
                                 {
                                 
    $abfrage .= "order by ID ASC"
                                 }
                                 
                         
    $ergebnis mysql_query($abfrage); 
                       
                         while (
    $row mysql_fetch_assoc($ergebnis)) 
                                 {   
                                     
    $lastID $row['ID']; 
                                     
                                
    $mail->AddAddress($row['Email']);  
                                
                                
    $anrede $row['Anrede'] ." "$row['Vorname'] ." "$row['Name'] .",\n"
                                
                                if (
    time() > $maxTime)
                                { 
                                    
    $more false
                                    
    $_SESSION['lastID'] = $lastID
                                }                        
       
                           
    $mail->IsHTML(true);
        
                                
    $mailtext='HTML+Text'
                                
    $mailtext.=$anrede;                                                                             
                                
    $mailtext.='noch mehr HTML+Text';

                         
                           
    $mail->Body  =  "$mailtext";                 

                                
    $alt_mailtext 'Text';
                                
    $alt_mailtext=$anrede;                                                                      
                                
    $alt_mailtext.= ZEILENUMBRUCH;                            
                                
    $alt_mailtext.= 'weiter im Text';                
                                
                           
    $mail->AltBody  "$alt_mailtext"
                         
                                if (
    $mail->send()) 
                                  {     
                                 echo 
    "Die Email wurde versandt.<br>";         
                                  }   
                                
    $mail->ClearAddresses();                            
                                 } 
      if (
    $max $lastID)  
      { 
        echo 
    '<html><head> 
              <meta http-equiv="refresh" content="5; URL=http://' 
    $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] . '?lastID=' $lastID '"> 
              <head> 
              <body> 
                 Gleichs gehts weiter! 
              </body> 
              </html>'

      } 
      else
      {    
         echo 
    "Fertig.";   
      } 

                  
    ?>

    Einen Kommentar schreiben:


  • Koala
    antwortet
    Ansonsten ist der Name richtig und die Umlaute im Text sind falsch.
    wie meinen ? was ist der Unterschied zwischen Name und Text ???

    Dort werden scheinbar zwei charset angaben übersendet:
    ???
    Poste mal den mail-header.

    das Script verwendet nur die eigentliche HTML-Mail
    was ist denn die eigentliche HTML-Mail ???

    Ist das ne separate Datei ?

    Ist diese "eigentliche HTML-Mail" auch im Editor als utf8 gespeichert worden ?

    Wie kommt der html-Code ins php-Script ?

    Poste mal Dein php-Script.

    Einen Kommentar schreiben:


  • Sirius
    antwortet
    nicht gewußt ?
    Zitat:
    Hast du darauf geachtet das die Kodierung in deiner Datei auch UTF8 entspricht?
    Hab gedacht das ne UTF-8 Angabe in der Datei dazu muss, hätte nicht gedacht das man den Zeichensatz im Editor in irgendeiner weise umstellen kann.

    Die PHPMailer Angabe hab ich nun geändert.


    Und SET NAMES hast Du drin?
    Ja
    Die Daten in der DB sind utf-8 ???
    Ja

    Gibt es da noch irgendein mail-Template welches als iso gespeichert ist ?
    nein, das Script verwendet nur die eigentliche HTML-Mail und den PHPMailer...

    error_reporting ist eingeschaltet ?
    ja

    Gib als meta charset utf8 an und mach ne Testausgabe des mail-Textes per echo.
    Hab ich gemacht.
    Umlaute aus der Datenbank in der HTML-Mail werden nicht dargestellt,
    Umlaute aus der Datenbakt in der reinen Text-Mail schon.

    Außerdem werden die Umlaute bei der Browserausgabe der reinen Text-Mail richtig dargestellt, bei der Ausgabe im Email-Programm Mail jedoch nicht.

    Bei Mail & GMX werden außerdem Umlaute richtig dargestellt, aber nur wenn der Name aus der Datenbank keine Umlaute enthält. Ansonsten ist der Name richtig und die Umlaute im Text sind falsch.

    Bei Web.de kann ich leider nur die HTML Mail prüfen, Da werden die Namen aus der Datenbank falsch dargestellt. Dort werden scheinbar zwei charset angaben übersendet:

    Content-Type: text/html; charset="iso-8859-15"
    Content-Transfer-Encoding: 8bit

    und

    Content-Type: text/plain; charset = "utf-8"
    Content-Transfer-Encoding: quoted-printable

    Einen Kommentar schreiben:


  • Koala
    antwortet
    Hatte ich nicht (wusste einfach nicht das ich das im Editor auf utf-8 umstellen muss).
    nicht gewußt ?
    Hast du darauf geachtet das die Kodierung in deiner Datei auch UTF8 entspricht?
    Im PHPMailer hab ich im Moment
    PHP-Code:
    public $CharSet = 'utf8_general_ci';

    stehen.
    das ist falsch.

    Es muß so aussehn:
    PHP-Code:
      /**
       * Sets the CharSet of the message.
       * @var string
       */
      
    public $CharSet           'utf-8'
    Und SET NAMES hast Du drin ?

    Die Daten in der DB sind utf-8 ???

    Gibt es da noch irgendein mail-Template welches als iso gespeichert ist ?

    error_reporting ist eingeschaltet ?

    Gib als meta charset utf8 an und mach ne Testausgabe des mail-Textes per echo.

    Ansonsten mußt eben ein Jobangebot erstellen oder unter Projekthilfe posten.

    Einen Kommentar schreiben:


  • Sirius
    antwortet
    Hast die Datei auch hochgeladen ?
    Ja hab ich. Habs auch grad nochmal überprüft.

    Hast Du Deine php-Datei und den html-Code als utf-8 gespeichert (im Editor) ???
    Hatte ich nicht (wusste einfach nicht das ich das im Editor auf utf-8 umstellen muss).

    Welchen Editor benutzt Du ?
    Als Editor benutze ich Eclipse.


    Naja jetzt hab ich im Editor auf utf-8 umgestellt, die Datei gespeichert und hochgeladen, aber die Umlaute werden immer noch nicht korrekt dargestellt...Im Moment sieht das so aus:

    Code:
     
    Verfügung.
    möglich.
    verstärkte
    Im PHPMailer hab ich im Moment
    PHP-Code:
    public $CharSet 'utf8_general_ci'
    stehen.
    Wenn ich im PHPMailer nur utf-8 schreibe, bleibt die Darstellung der Sonderzeichen im Alternativtext genauso wie bei utf8_general_ci, nur das die Umlaute aus der Datenbank nicht mehr dargestellt werden.

    Einen Kommentar schreiben:


  • Koala
    antwortet
    dafür werden die umlaute aber in der Form angezeigt:
    Ÿber
    Dann ist der phpmailer immer noch nicht auf utf-8 umgestellt.
    Hast die Datei auch hochgeladen ?
    auch das ergänzen von

    PHP-Code:
    header('Content-type: text/html; charset=utf-8');

    ändert das nicht..
    hat ja auch nichts mit der mail zu tun.

    Hast Du Deine php-Datei und den html-Code als utf-8 gespeichert (im Editor) ???

    Welchen Editor benutzt Du ?

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    mysql_query("SET NAME 'utf8'");
    Es heißt SET NAMES

    Einen Kommentar schreiben:


  • Sirius
    antwortet
    So hab in Meiner Datenbank jetzt Anrede, Name und Vorname bei Kollation auf utf8_general_ci umgestellt und utf8_general_ci im PHPMailer eingetragen.

    Ergebnis: Umlaute aus der Datenbank werden dargestellt.

    nur mit den Umlauten in der Mail klappts net, jetzt wird zwar nicht mehr gar nichts angezeigt, dafür werden die umlaute aber in der Form angezeigt:
    Ÿber

    auch das ergänzen von

    PHP-Code:
    header('Content-type: text/html; charset=utf-8'); 
    ändert das nicht...

    Einen Kommentar schreiben:


  • BlackScorp
    antwortet
    also deine PHP Datei:
    sollte sowas haben
    PHP-Code:
    header('Content-type: text/html; charset=utf-8'); 
    deine MYSQL Datenbank sollte sowas haben:

    PHP-Code:
    mysql_connect()
    mysql_select_db();
    mysql_query("SET NAME 'utf8'"); 
    und dann im PHP Mailer auch auf utf8 stellen..

    wenn das alles nicht geht.... dann weis ich auch net

    Einen Kommentar schreiben:


  • BlackSpirit
    antwortet
    Hast du darauf geachtet das die Kodierung in deiner Datei auch UTF8 entspricht?

    Einen Kommentar schreiben:

Lädt...
X