Mail, UTF8 und Sonderzeichen
ziegenpeter
- php
0 ziegenpeter0 hotti
0 dedlfix0 Felix Riesterer0 tami0 tami
Hallo,
ich verschicke mit PHP eine Email:
mail($user['username'] . '<' . $user['email'] . '>', 'Subject', utf8_decode($message), $header)
Anwendung ist in UTF8, Umlaute kommen in der Mail korrekt an, nur statt folgender Anführungszeichen: „“ erscheinen nur Fragezeichen.
Wie bekomme ich die richtig angezeigt?
Danke, ziegenpeter
Hallo,
ich verschicke mit PHP eine Email:
Ach ja, eine Text-Mail.
ziegenpeter
hi,
ich verschicke mit PHP eine Email:
Ach ja, eine Text-Mail.
Die Header müssen das korrekt deklarieren, dann wird die Mail auch richtig angezeigt, der erste Header wäre hiezu:
Content-Type: text/plain; Charset=UTF-8
Nun zur Message, Charset ist ein Ding. Das andere Ding ist das Transfer-Encoding, nochn Header:
Content-Transfer-Encoding: quoted-printable
oder
Content-Transfer-Encoding: base64
Die Message wäre also base64 oder quoted-printable zu encoden.
Tach!
ich verschicke mit PHP eine Email:
mail($user['username'] . '<' . $user['email'] . '>', 'Subject', utf8_decode($message), $header)
Anwendung ist in UTF8, Umlaute kommen in der Mail korrekt an, nur statt folgender Anführungszeichen: „“ erscheinen nur Fragezeichen.
utf_decode() dekodiert UTF-8 zu ISO-8859-1. Diese Anführungszeichen sind darin nicht enthalten, gehen also verloren.
Wie bekomme ich die richtig angezeigt?
Mail UTF-8-kodiert schicken oder nach Windows-1252 kodieren. Aber auch bei letzterem können dir Zeichen verlorengehen.
dedlfix.
Lieber ziegenpeter,
ich habe das für meine Bedürfnisse (als Methode einer Klasse) so gelöst:
public function send_mail ($to, $from, $subject, $text, $return_path) {
$header = sprintf(
"MIME-Version: 1.0\r\n"
. "Content-Type: text/plain; charset=utf-8\r\n"
. "Content-Transfer-Encoding: 8bit\r\n"
. 'From: "%1$s" <%2$s>'."\r\n"
. '%3$s',
$from['name'],
$from['address'],
(empty($return_path) ? '' : sprintf(
"Reply-To: %s\r\n",
$return_path
))
);
$subject = sprintf(
'=?UTF-8?B?%s?=',
base64_encode($subject)
);
// send mail
return mail(
$to,
$subject,
wordwrap($text, 60),
$header,
"-f $to"
);
}
Vielleicht nützt es Dir ja etwas...
Liebe Grüße,
Felix Riesterer.
hi ziegenpeter,
oder http://forum.de.selfhtml.org/archiv/2014/5/t217437/#m1493705 und bezüglich UTF8: http://framework.zend.com/manual/1.12/de/zend.mail.character-sets.html
mfg
tami
hi tami,
hi ziegenpeter,
oder http://forum.de.selfhtml.org/archiv/2014/5/t217437/#m1493705 und bezüglich UTF8: http://framework.zend.com/manual/1.12/de/zend.mail.character-sets.html
bzw.
http://framework.zend.com/manual/2.0/en/modules/zend.mail.message.html
"By default, the Message class assumes ASCII encoding for your email. If you wish to use another encoding, you can do so; setting this will ensure all headers and body content are properly encoded using quoted-printable encoding.
$message->setEncoding("UTF-8");
~~~"
mfg
tami