Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Wie bekomme ich Umlaute im Formmailer aktiviert?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Wie bekomme ich Umlaute im Formmailer aktiviert?

    Hallo zusammen,

    ich verwende folgendes Script für meinen Formmailer,
    funktioniert einwandfrei, nur Umlaute werden in den Mails nicht dargestellt,
    wo muss ich was mit eintragen, damit das funktioniert?

    Bitte um Hilfe...

    Hier mein Script:
    PHP-Code:
    <?PHP
    // Unsere PHP-Datei

    // Global-Array für die Fehlermeldungen
    $GLOBALS['fehler'] = array(); /* Hier wird ein Array definiert mit noch keinen Einträgen. $GLOBALS[] ist ein Array
    und sagt aus, dass das Objekt in dem Index ($GLOBALS[Index eines Arrays]) überall im Script aufrufbar sein soll. Hätten
    wir einfach $fehler geschrieben, würden unsere selbstgeschriebenen Funktionen nicht darauf zugreifen können. 
    Extra-Zeug: Wer mit C(++) etwas zutun hatte, kann es schlecht nachvollziehen, dass die globalen Objekte so gekennzeichnet
    werden müssen, da es in C(++) automatisch erfolgt, soweit ein Objekt "außen" definiert wird. */

    if (isset($_POST['submit'])) // Unsere Hauptanfrage
        
    /* Hier fangen die Funktionsaufrufe an, um die Definition anzugucken, sehen Sie wie schon auf der Skizze gezeichnet
        nach ganz unten im Script */
        
    pruefe_name($_POST['nachname'],
            
    "Sie haben den Nachnamen nicht eingegeben.",
            
    "Sie haben unerlaubte Zeichen im Nachnamen eingegeben.");
        
    pruefe_name($_POST['strasse'],
            
    "Sie haben die Straße nicht eingegeben.",
            
    "Sie haben unerlaubte Zeichen in der Straße eingegeben.");
        
    pruefe_name($_POST['PLZ'],
            
    "Sie haben die Postleitzahl nicht eingegeben.",
            
    "Sie haben unerlaubte Zeichen in der Postleitzahl eingegeben.");
        
    pruefe_name($_POST['Ort'],
            
    "Sie haben den Ort nicht eingegeben.",
            
    "Sie haben unerlaubte Zeichen im Ort eingegeben.");
        
    pruefe_email($_POST['email'],
            
    "Sie haben keine eMail angegeben.",
            
    "Sie haben unerlaubte Zeichen in Ihrer eMail-Adresse verwendet.");
        if (empty(
    $_POST['anfrage'])) : array_push($GLOBALS['fehler'],
        
    "Sie haben keine Anfrage eingegeben."."<BR>"); $_POST['anfrage'] = NULL; endif; /* Hier wird überprüft
        ob das Textfeld "Anfrage" keinen Wert enthällt. Falls
        es so ist wird wie in unseren Funktionen auch in das Fehlermeldungs-Array geschrieben und der Wert auf NULL
        umgeändert. Eine Funktion in diesem Fall zu schreiben ist nicht nötig, da hier nur zwei simple Anweisungen 
        erfolgen. */
        /* Hier werden die Daten für den Versand eingegeben, sowie der Umgang mit Fehlermeldungen festgelegt: */
        
    daten_senden("hassdenteufel@alischdruck.de",
            
    "Anfrage - ".$_POST['thema'],
            
    "Von: ".$_POST['Firma']." ".$_POST['anrede']." ".$_POST['nachname']."\n".
            
    "Anschrift: ".$_POST['strasse']." ".$_POST['PLZ']." ".$_POST['Ort']." ".$_POST['Telefon']." ".$_POST['Betreff']."\n".
            
    "eMail-Adresse: ".$_POST['email']."\n".
            
    "Anfrage: \n----------\n".$_POST['anfrage'],
            
    "Bestätigung",
            
    "Guten Tag ".$_POST['anrede']." ".$_POST['nachname'].",\n".
            
    "Sie erhalten diese eMail, da Sie auf unserer Webseite mit uns Kontakt aufgenommen und eine eMail-".
            
    "Bestätigung gewünscht haben.\n".
            
    "Ihre Anfrage wird so schnell wie möglich von unseren Mitarbeitern verarbeitet und Sie werden von uns informiert.\n".
            
    "Mit freundlichen Grüßen, Alisch Offsetdruck",
            
    "Leider konnte Ihre Nachricht nicht übermittelt werden.",
            
    "Leider konnte Ihre Bestätigung nicht übermittelt werden.",
            
    "Ihre Anfrage wurde erfolgreich an uns weitergeleitet.",
            
    "Ihre Bestätigungsmail wurde erfolgreich an Sie weitergeleitet.",
            
    "From: ".$_POST['email']." <".$_POST['nachname'].">",
            
    "From: Alisch Offsetdruck");
        }

    // Funktionen:
    function pruefe_name(&$name$fehlermld_1$fehlermld_2/* &$name ist eine Referenz, das heißt es wird keine Kopie
    der übergebenen Variable für die Funktion gemacht, sondern ein Aliasname erstellt, der auf die übergebene Variable 
    direkt zugreifen kann. Also wird nach dem Funktionsaufruf z.B. $_POST['vorname'] als Argument direkt verändert, ohne, 
    dass man $_POST['vorname'] = pruefe_name($_POST['vorname']); hinschreiben muss. Die anderen zwei Argumente sind dazu
    da, um die zwei Fehlermeldungen zu übergeben. Die erste ist für den Fall, dass die übergebene Variable nichts
    erhält und die zweite falls die Variable durch das Muster nicht passt und z.B. unerlaubte Zeichen oder Ziffern 
    erhält */
        
    {
        
    $name trim($name); /* trim() entfernt ua. überflüssige Leerzeichen am Ende und Anfang des Strings. Danach wird
        ein "sauberer" String ausgegeben und an die Variable $name übergeben */
        
    if (empty($name)) : array_push($GLOBALS['fehler'], $fehlermld_1."<BR>"); 
        
    $name NULL; return; endif; /* Vielleicht etwas ungewöhnliche Methode eine if-Abfrage zu machen, aber manchmal 
        übersichtlicher, wenn es um 2-3 kleine Befehle geht: if (Bedingung) : Befehle... endif; */
        /* empty() gibt true zurück, falls der String leer, undefiniert oder gleich 0 ist.
        array_push() wird hier verwendet, um das Fehler-Array zu updaten. Danach wird der Wert der Variable $name evtl.
        $_POST['vorname'] auf NULL gesetzt. NULL ist sowas wie unbekannt und nicht mit 0 als Zahl zu verwechseln!
        Wir weisen NULL allen Feldern zu, die irgendwelche Fehler erhalten, das erleichtert die Fehlersuche im Script.
        return wird verwendet, um in einer Funktion einen Rückgabewert auszugeben (return "Wert") oder die Funktion
        einfach zu beenden und somit false zu liefern (return;) */
        
    if (preg_match("/^[- A-Za-zÄÖÜßäöü0123456789]{2,25}$/i"$name))
            {
            return 
    $name;
            }
            else
                {
                
    array_push($GLOBALS['fehler'], $fehlermld_2."<BR>");
                
    $name NULL;
                return;
                } 
    /* Hier wird zuerst in der Funktion preg_match()
        überprüft ob der String dem Muster entspricht (Argument 1) und falls ja true ausgegeben, wenn preg_match() false
        zurückliefert wird auch aus unserer Funktion false kommen und die entsprechende Fehlermeldung wird im Array 
        gespeichert */
        
    }
        
    // Die nächste Funktion unterscheidet sich kaum, es wird nur ein anderes Überprüfungsmuster geschrieben
    function pruefe_email(&$email$fehlermld_1$fehlermld_2)
        {
        
    $email trim($email);
        if (empty(
    $email)) : array_push($GLOBALS['fehler'], $fehlermld_1."<BR>"); $email NULL; return; endif;
        if (
    preg_match(
        
    "/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/",
        
    $email))
        
    /* Dieses lange Ding habe ich nicht selbst geschrieben, da für sowas wie eMails
        oder URLs es genug fertige Regex im Netz gibt. Man muss ja auch nicht unbedingt zwei Stunden lang etwas in dieser 
        Art selbst entwickeln. (Es sei denn man lernt es gerade :)) */
            
    {
            return 
    $email;
            }
            else
                {
                
    array_push($GLOBALS['fehler'], $fehlermld_2."<BR>");
                
    $email NULL;
                return;
                }
        }
        
    /* Funktion für die Versendung von Daten: (Verwaltet auch die Fehlermeldungen und Erfolgsmeldungen bei der 
        Benutzung der mail()-Funktion) */
    function daten_senden($email$betreff$inhalt$betreff_empfbest$inhalt_empfbest$fehlermld,
    $fehlermld_empfbest$erfolgrmld$erfolgrmld_empfbest$header ""$header_empfbest "")
    /* Funktionsparameter erklärt:
    $email            = eMail-Adresse des Webmasters
    $betreff            = Betreff der Nachricht
    $inhalt            = Inhalt der Mail
    $betreff_empfbest        = Betreff der Bestätigungsmail
    $inhalt_empfbest        = Inhalt der Bestätigungsmail
    $fehlermld        = Fehlermeldung der Nachricht
    $fehlermld_empfbest    = Fehlermeldung der Bestätigungsmail
    $erfolgrmld        = Erfolgreich versendet-Meldung
    $erfolgrmld_empfbest    = Erfolgreich versendet-Meldung der Bestätigungsmail
    $header            = Header der Nachricht (optional)
    $header_empfbest        = Header der Bestätigungsmail (optional)
    */
        
    {
        if (
    sizeof($GLOBALS['fehler']) == 0// Prüft ob das Array mit keiner Fehlermeldung gefüllt wurde
            
    {
            
    /* Prüfen ob die Mail an den SMTP-Server erfolgreich gesendet wird und die passende Meldung ausgeben: */
            
    if (@mail($email$betreff$inhalt$header)) { echo $erfolgrmld."<BR>"; } else { echo $fehlermld."<BR>"; }
            if (
    $_POST['bestaetigung']) // Prüft, ob der Besucher eine eMail-Bestätigung wünscht
                
    {
                if (@
    mail($_POST['email'], $betreff_empfbest$inhalt_empfbest$header_empfbest))
                    {
                    echo 
    $erfolgrmld_empfbest."<BR>"// Erfolgreich gesendet-Nachricht
                    
    }
                    else
                        {
                        echo 
    $fehlermld_empfbest."<BR>"// SMTP-Fehler aufgetreten
                        
    }
                }
            }
            else 
    // Falls Fehler in den Feldern gefunden wurden:
                
    {
                foreach (
    $GLOBALS['fehler'] AS $value// Schleife, um alle Fehler aufzuzählen, die eingetragen wurden
                    
    {
                    echo 
    $value;
                    }
                }
        }
    ?>

  • #2
    Du musst einenn header für die Codierung UTF-8 mitschicken, den wie ich gesehen habe ist dein header vollkommen leer!
    PHP-Code:
    $header "From: Absender <office@absender.at>\r\n"
    $header .= "Content-Type: Charset=utf-8\r\n"
    EDIT: Wenn du jedoch eine HTML nachricht schicken möchtest, dann musst du folgenden Header mitschicken:
    PHP-Code:
    $header "From: Absender <office@absender.at>\r\n"
    $header .= "Content-Type: text/html; Charset=utf-8\r\n"

    Kommentar


    • #3
      erledigt...

      Kommentar


      • #4
        Hat dir mein Vorschlag weitergeholfen?

        Gruß Phillkill12

        Kommentar

        Lädt...
        X