Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Php mail() header und umlaute

Empfohlene Antworten

Veröffentlicht

Hi

ich habe nichts konkretes gefunden zu diesem Thema.

Ich muss in php ein kleines system programmieren das automatisch mails verschickt.

Im Body erscheint alles richtig encodet aber alle umlaute die in der betreff zeile also quasi im header sind werden als X oder ? dargestellt.

Wer kann mir sagen was ich tun muss das er diese sonderzeichen iso encoden tut?

So sieht meine funtktion bis jetzt aus:


$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "Content-Transfer-encoding: 8bit\r\n";
$headers .= "From: Me <me@example.de>\r\n";

mail($email, $message["subject"], $message["body"]."\n\r".$message["link"], $headers);
[/PHP]

Danke

sicher dass du die mails in UTF-8 verschicken willst?

zu deinem Problem siehe:

http://de.php.net/manual/en/function.htmlentities.php

also:


$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "Content-Transfer-encoding: 8bit\r\n";
$headers .= "From: Me <me@example.de>\r\n";

mail($email, htmlentities($message["subject"]), htmlentities($message["body"]."\r\n".$message["link"]), $headers);
[/PHP]

ausserdem muss es "\r\n" heissen, nicht "\n\r"!#

Gruß,

Markus

Danke für die schnelle antwort.

den Charset hatte ich testweise umgestellt, hab ihn aber jetzt umgestellt.

Leider bringt das htmlentities auch nichts da die ausgabe in der betreffzeile jetzt ungefähr so aussieht:

...Maßnahme wu...

Quoted-Printable benutzen. Geht via imap_8bit() wenn dein PHP mit IMAP Support gebaut ist.


<?
$From = "Jürgen Müstermän <jmusterman@example.com>";
$Subject = "Viele Umlaute: äöü und ein ß natürlich!";

$header = "MIME-Version: 1.0\r\n";
$header .= "From: =?ISO-8895-15?Q?".imap_8bit($From)."?=\r\n";
$header .= "Subject: =?ISO-8859-15?Q?".imap_8bit($Subject)."?=\r\n";

print $header;
?>
[/php]

[code] # php qp.php MIME-Version: 1.0 From: =?ISO-8895-15?Q?J=FCrgen M=FCsterm=E4n <jmusterman@example.com>?= Subject: =?ISO-8859-15?Q?Viele Umlaute: =E4=F6=FC und ein =DF nat=FCrlich!?= [/code]

Ungetestet, aber sollte so klappen. Normalerweise gehört die =?ISO...?Q? vor das erste Sonderzeichen. Schau dir einfach mal korrekte Mails mit Umlauten "roh" an.

Die seite hatte ich auch schon mal.

Ich hab jetzt mich dazu durchgerungen es mit PEAR zu machen . PEAR Mime Mail

Danke für die Hilfe

Quoted-Printable benutzen. Geht via imap_8bit() wenn dein PHP mit IMAP Support gebaut ist.


<?
$From = "Jürgen Müstermän <jmusterman@example.com>";
$Subject = "Viele Umlaute: äöü und ein ß natürlich!";

$header = "MIME-Version: 1.0\r\n";
$header .= "From: =?ISO-8895-15?Q?".imap_8bit($From)."?=\r\n";
$header .= "Subject: =?ISO-8859-15?Q?".imap_8bit($Subject)."?=\r\n";

print $header;
?>
[/php]

Ungetestet, aber sollte so klappen.

Das functioniert auch.

leider will die mail() function von php den Subject extra angegeben bekommen.

Also kann man einen aufruf machen wie.

[PHP]mail("test@test.net", "=?ISO-8859-15?Q?".imap_8bit($Subject)."?=\r\n","$body,$headers);

Natürlich darf man in den header kein subject mehr drin haben weil die mail sonst 2 hatt.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.