• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Umlaute in Mail-Empfänger - PHP mail()

J

j-l-n

Guest
Der Versand von E-Mails mit PHP mail() klappt in meinem Skript problemlos. Enthält nun allerdings die Mailadresse des Empfängers Sonderzeichen, wie z.B. Umlaute, wird zwar kein Fehler ausgegeben, aber die Mail kommt nicht an...
PHP:
$empfaenger = "testmitä@trash-mail.com";

mail($empfaenger, $betreff, $text, $headers);

$email = htmlentities($empfaenger, ENT_HTML5, "UTF-8");
die("E-Mail abgeschickt an ".$email);
 
Seit wann düfen E-Mail Adressen deutsche Umlaute enthalten?


Ich hab's auch erst zufällig erfahren:
Wikipedia schrieb:
Alle Zeichen oberhalb des ASCII-Codes 127, also auch Umlaute, waren bis vor kurzem verboten. Seit RFC 6531, welcher im Jahr 2012 eröffnet wurde, sind jedoch auch viele UNICODE-Zeichen (internationale Buchstaben vieler Länder) erlaubt.

Allerdings wird auch erwähnt:
CHIP Forum schrieb:
Also viele Mailserver als auch Mailprogramme stellen sich nach wie vor quer, sowohl bei Umlauten in der Mailadresse als auch in der Domain.


Vielleicht prüfe ich auch einfach die Eingabe auf Umlaute usw. und geb dann eine Fehlermeldung à la "Ihre E-Mail-Adresse enthält ungültige Zeichen. Bitte verwenden Sie eine andere!" aus. Nur ist das etwas rigoros, dieses "Tja, dann benutzen Sie halt eine andere", falls jemand wirklich eine Mailadresse mit Umlauten besitzt...
 
Zuletzt bearbeitet:
Hast du mal versucht, die Adresse auch Base64 zu kodieren?
Durch das vorangestellte =?ISO-8859-15?Q? müsste der Mailserver das eigentlich raffen.
 
Schau' dir doch mal den Rückgabewert von mail() an - eventuell beschwert sich da PHP doch.
Liefert 1 zurück. Scheint also alles geklappt zu haben. Hilfreich wäre, irgendwie erfahren zu können, an welche Adresse denn die E-Mail von PHP nun gesendet wurde...

Hast du mal versucht, die Adresse auch Base64 zu kodieren?
Durch das vorangestellte =?ISO-8859-15?Q? müsste der Mailserver das eigentlich raffen.
Funktioniert nicht. Sowohl mit ISO-8859-1 als auch UTF-8.
 
Mein Tipp:
Bitte nicht mail() benutzen, sondern eine ordentliche Mail-Klasse (phpmailer / swiftmail).
Du läufst sonst immer den Problemen hinterher:
- dass deine Email erst gar nicht gesendet wird
- deine Email-Header NICHT RFC konform sind und die mail von einem der Zwischensysteme deshalb nicht weiterbefördert wird
- am Zielsystem abgelehnt wird
- Inhalte/Umlaute falsch dargestellt werden.

In jeder guten Mailerklasse kannst du den Zeichensatz setzen.

Mail() ist tot, es lebe mail()

LG jspit
 
Danke für den Tipp, jspit. Ich bin mir dessen allerdings bewusst. Dennoch mache ich das Ganze deswegen mit mail(), weil es sich einfach nur um eine kurze Info-Mail an mich selbst handelt. Und die kann ich dann einfach abschicken, ohne erst groß noch irgendwelche Klassen verwenden zu müssen...
Trotzdem wie gesagt danke für den Hinweis!
 
Zurück
Oben