php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.12.2011, 13:20  
Neuer Benutzer
 
Registriert seit: 23.12.2011
Beiträge: 1
PHP-Kenntnisse:
Anfänger
Legion_x befindet sich auf einem aufstrebenden Ast
Standard Mailsenden per PHP - Umlaute werden nicht richtig dargestellt

Hallo,

ich bin relativer PHP Neuling. habe mir gerade ein erstes Script geschrieben, welches anhand verschiedener Inputfelder eine Mail raussendet:

PHP-Code:
            <?php
                $Empfaenger 
"foo@gmx.de";            
                
                if(isset(
$_GET['check']))
                {

    
                    if(
$_GET['Send'])
                    {
                         if(empty(
$_GET['Name']) || empty($_GET['E-Mail']))
                         {
                                echo
"<h2>Formular unvollständig</h2><p>Bitte gehen Sie zum <a href=\"javascript:history.back();\">Formular zurück</a> und füllen Sie alle Felder aus!</p>";
                         }
                         else
                         {
                                
$Mailnachricht "Sie haben folgende Nachricht erhalten: \n\n";
                                while(list(
$Formularfeld$Wert)=each($_GET))
                                {
                                     if(
$Formularfeld!="Send")
                                     {
                                            
$Mailnachricht .= $Formularfeld.": ".$Wert."\n\n";
                                     }
                                }
                                
$Mailnachricht .= "\nDatum/Zeit: ";
                                
$Mailnachricht .= date("d.m.Y H:i:s");
                                
$Mailbetreff "Betreff: ";
                                
$Mailbetreff .= $_GET['Betreff'];
                                
mail($Empfaenger$Mailbetreff$Mailnachricht"from: ".$_GET['E-Mail']);
                                echo
"<h2>E-Mail erfolgreich gesendet</h2><p>Vielen Dank für Ihre Kontaktaufnahme. Wir werden Ihre E-Mail schnellstmöglich bearbeiten und Ihnen umgehend zurückschreiben.</p><p><a href=\"index.php\">Zur Startseite zurück</a></p>";
                         }
                    }
                    else
                    {
                         echo 
"<h2>Fehler beim Senden</h2><p>Ein Fehler ist aufgetreten. Bitte gehen Sie zum <a href=\"kontaktformular.php\">Formular</a> zurück.</p>";
                    }
                }
                else {

                echo 
"foo";

                }                
            
?>      








  <form method="get">        
                <h2>Ihre Kontaktdaten</h2> (Pflichtfelder)

        <label for="Anrede">Anrede:</label>
                <input type="radio" name="Anrede" value="Herr" class="radio" id="herr"></input>
                <label for="herr" class="large">Herr</label>
                <input type="radio" name="Anrede" value="Frau" class="radio" id="frau"></input>
                <label for="frau" class="large">Frau</label>
                <input type="radio" name="Anrede" value="Familie" class="radio" id="familie"></input>
                <label for="familie" class="large">Familie</label>                 
                <input type="radio" name="Anrede" value="Firma" class="radio" id="firma"></input>
                <label for="firma" class="large">Firma</label>         
                <br /><br />        
            
                <label for="Name">Name:</label>
        <input name="Name" size="40" type="text"  id="Name"></input>
                <br />
                <label for="Telefon">Telefon:</label>
        <input name="Telefon" size="40" type="text"  id="Telefon"></input>
                <br />
                <label for="Mail">E-Mail:</label>
        <input name="E-Mail" size="40" type="text"  id="Mail"></input>
                <br /><br />
          <label for="Strasse">Strasse:</label>
        <input name="Strasse" type="text" id="Strasse" class="medium"></input>
                <label for="Hausnummer" class="embedded small">Nr:</label>
        <input name="Hausnummer" type="text" id="Hausnummer" class="small"></input>    
                <br />            
        <label for="PLZ">Postleitzahl:</label>
        <input name="Postleitzahl" type="text" id="PLZ" class="small"></input>
                <label for="Ort" class="embedded small">Ort:</label>
        <input name="Ort" type="text" id="Ort" class="medium"></input>        
        
                <input type="hidden" name="check" id="check" value="check" />        
                <br /><br />        
        <input name="Send" type="submit" value="Abschicken" class="button"></input> 
  </form>


Funktioniert auch alles soweit ganz gut. Bis auf Mails mit Umlauten wie Ä,Ö und Ü. Die werden in den Mails zum Beispiel zu "ä".

Da gibt es doch sicherlich was mit den Zeichencodierungen...oder?
Legion_x ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.12.2011, 13:30  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

...zum Mailversenden bitte eine Mailerklasse verwenden!!!! Schau mal hier:

http://www.robo47.net/text/38-Mail-ist-tot-es-lebe-mail

ich nutze z.B. die Swiftmailer Klasse (damit hast Du dann solche Probleme nicht).

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 23.12.2011, 15:39  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

So, wie das bisher programmiert ist kann man sehr einfach ein paar Millionen Webemails für blaue Pillen über deinen Absender verschicken.

Nimm eine Mailklasse und denke daran, dass alle Eingaben, die ein User in dein Formular macht böse sein können. Jede einzelne Eingabe muss geprüft werden bevor sie in irgendeiner Form weiterverarbeitet werden darf (mail, Datenbankeintrag, Ausgabe im Browser)
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 23.12.2011, 15:55  
Benutzer
 
Registriert seit: 23.09.2009
Beiträge: 67
PHP-Kenntnisse:
Anfänger
MFGSparka befindet sich auf einem aufstrebenden Ast
Standard

Immer wieder gut, dass die erste Aussage ist, dass man doch bitte eine ordentliche Klasse verwenden soll

Mein Tipp um dein Problem zu lösen ist, darauf zu achten, dass in deiner Mail erwähnst, wie der Text codiert werden

PHP-Code:
$message .= "Content-Type: text/plain; charset=\"utf-8\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n"
MFGSparka ist offline   Mit Zitat antworten
Alt 23.12.2011, 18:29  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von MFGSparka Beitrag anzeigen
Immer wieder gut, dass die erste Aussage ist, dass man doch bitte eine ordentliche Klasse verwenden soll
Nur leider reicht das nicht aus, um die meisten hoster zu befriedigen, da fehlende header auf Spam hindeuten... selbst lokale Emailclients sind meist schon so eingestellt, das solche mails im Ordner "Spamverdacht" landen.

Wer sich selbst einen Gefallen tun will, benutzt einen fertigen Client. Wer unbedingt mail benutzen und was lernen will, sollte sich einen solchen Client zumindest mal anschauen, was und wie der das macht. Die RFC's zu emails sind umfangreich.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 23.12.2011, 22:31  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von MFGSparka Beitrag anzeigen
Immer wieder gut, dass die erste Aussage ist, dass man doch bitte eine ordentliche Klasse verwenden soll

Mein Tipp um dein Problem zu lösen ist, darauf zu achten, dass in deiner Mail erwähnst, wie der Text codiert werden

PHP-Code:
$message .= "Content-Type: text/plain; charset=\"utf-8\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n"
Zunächst mal gehört die Kodierung wenn dann in den Header und nicht in den Nachrichtenteil.

Zum Zweiten kann man nicht oft genug erwähnen, daß man lieber Mailerklassen nutzen sollte, wenn man sich dem Studium der RFC´s nicht zutraut bzw. diese gar nicht kennt.
Fertige Mailerklassen haben die Problematiken bereits gelöst und nehmen einem diese Arbeit ab.

Ich habe mir mal zum Eigenverständnis die Mühe gemacht, einen eigenen SMTP-Wrapper gemäß der entsprechenden RFC's zu entwickeln und kann sagen, daß die immer wiederkehrenden Hinweise auf fertige Mailerklassen durchaus Ihren Sinn haben!
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 24.12.2011, 11:41  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Es ist vollkommener Blödsinn, Mailheader selbst zusammenbauen zu wollen oder solches zu empfehlen. Mit PHPmailer kannst du deine Mails so senden:

PHP-Code:
<?php
// Multipart-Mail HTML + Text
require('phpmailer/class.phpmailer.php');
$mail = new PHPMailer();

$mail->Subject $betreff;
$mail->IsHTML(true);
$mail->Body     $html// Das was du vermailen möchtest HTML-Format
$mail->AltBody   $text// Das was du vermailen möchtest txtL-Format
$mail->From     $absender;
$mail->FromName $absendername;
$mail->AddReplyTo($antwort_an_email);
$mail->Sender     $fehlerpostfach;
$mail->CharSet  =  "utf-8"// btw. den charset, mit dem du arbeitest
$mail->AddAddress($empfaenger_email);
$mail->Send(); // weg damit
PHP-Code:
<?php
// Nur-Text-Mail
require('phpmailer/class.phpmailer.php');
$mail = new PHPMailer();

$mail->Subject $betreff;
$mail->Body     $text// Das was du vermailen möchtest txtL-Format
$mail->From     $absender;
$mail->FromName $absendername;
$mail->AddReplyTo($antwort_an_email);
$mail->Sender     $fehlerpostfach;
$mail->CharSet  =  "utf-8"// btw. den charset, mit dem du arbeitest
$mail->AddAddress($empfaenger_email);
$mail->Send(); // weg damit
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 24.12.2011, 13:21  
meikel
Gast
 
Beiträge: n/a
Standard

Auch wenn der Hinweis, eine gut funktionierende Mail Klasse zu verwenden, richtig ist:
Zitat:
Zitat von Wolla Beitrag anzeigen
Es ist vollkommener Blödsinn, Mailheader selbst zusammenbauen zu wollen oder solches zu empfehlen. Mit PHPmailer kannst du deine Mails so senden:
Was anderes, als "Mailheader zusammenbauen", macht phpmailer & Co. auch nicht.
  Mit Zitat antworten
Alt 24.12.2011, 13:24  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Aber bei denen ist das bereits "stress tested", was bei Eigenentwicklungen meist nie der Fall sein wird!
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 24.12.2011, 13:32  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Arne Drews Beitrag anzeigen
Aber bei denen ist das bereits "stress tested",
Korrekt. Ich wäre schon für ne korrekt kodierte Betreffzeile Marke "viele Grüße" zu faul, daß Fahrrad php-/swift-mailer nachzubasteln.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Mail - Umlaute werden falsch angezeigt? Snoopey PHP Einsteiger 2 24.11.2011 20:20
UTF-8 und die ewigen Umlaute... clemensplainer PHP Einsteiger 10 30.07.2011 21:25
Umlaute werden falsch dargestellt UTF-8 puma_hh PHP Einsteiger 3 05.07.2011 18:19
Umlaute (äüö, ß) richtig darstellen largo PHP Einsteiger 1 23.06.2011 16:42
[Erledigt] Darstellung der Umlaute nicht immer Richtig Eisenbahner PHP Einsteiger 8 14.03.2011 21:29
[Erledigt] Umlaute (&amp;auml;) umwandeln chr1s-eg PHP Einsteiger 10 24.01.2011 12:41
[Erledigt] PHP Umlaute trotz UTF-8 usw falsch dargestellt floripipo PHP Tipps 2010 12 15.09.2010 21:11
Umlaute werden nicht richtig angezeigt singu PHP Tipps 2010 2 01.08.2010 20:07
[Erledigt] Umlaute richtig anzeigen Nokes PHP Tipps 2010 7 25.06.2010 12:14
[Erledigt] PHPMailer und Umlaute Sirius PHP Tipps 2010 14 30.03.2010 15:14
Wie bekomme ich die Bildanzeige richtig dargestellt? Kruemmel PHP Tipps 2010 17 21.03.2010 21:51
[Erledigt] eMail wird nicht richtig dargestellt (HTML-Mail) lippo PHP Tipps 2010 12 14.03.2010 15:09
Umlaute automatisch ersetzen PHP Tipps 2005 5 31.03.2005 17:34
MySQL Umlaute werden in PHP nicht richtig angezeigt PHP Tipps 2004 5 25.10.2004 20:36
Variable wird in Formularfeld nicht richtig dargestellt PHP Tipps 2004 5 21.09.2004 16:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
nach mailversand über php formular werden sonderzeichen nicht korrekt dargestellt, php email versenden sonderzeichen, e-mail wird nicht korrekt angezeigt, formail betreff umlaute, php mailversand sonderzeichen werden falsch angezeigt, php mail umlaute, php formular umlaute falsch <?php echo, php mail versenden umlaute, php umlaute in mail korrekt senden, php formular probleme umlaute $mailnachricht = \sie haben folgende nachricht erhalten:, php mailer codierung damit umlaute richtig angezeigt werden, php mail href sonderzeichen, mail php umlaute falsch

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:36 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum