Просмотр полной версии : [Проблема] Sendmail и кодировка
Talgat Ravilov
12.06.2011, 21:12
Столкнулся с проблемой. Имеется хост с Ubuntu используемый в роли веб-сервера. При регистрации пользователей, скрипт отправляет им сообщение на почту. В заголовке и тексте сообщения кракозябры. Как быть?
DarkUser
12.06.2011, 21:25
тынц (http://www.joelonsoftware.com/articles/Unicode.html)?
Talgat Ravilov
12.06.2011, 21:28
Вот текст отправляемого сообщения. Я так понял нужно добавить строчку с типом материала и кодировкой? Как должна выглядеть эта строка?
<?
$email = $_POST['email'];
$url1 = $_POST['url1'];
$url2 = $_POST['url2'];
$url3 = $_POST['url3'];
$url4 = $_POST['url4'];
$url5 = $_POST['url5'];
$url6 = $_POST['url6'];
$ok = false;
if ($email != "") {
$subject = "Here are your URL's from " . $site_name . "!";
$message = "Your uploaded image is now available from anywhere on the Internet!\n\n\n";
if ($url1 != "") {
$message .= "Link for viewing the photo:\n\n";
foreach($url1 as $tmp)
{
$message .= "$tmp\n\n";
}
}
if ($url2 != "") {
$message .= "Link directly to your photo:\n\n";
foreach($url2 as $tmp)
{
$message .= "$tmp\n\n";
}
}
if ($url3 != "") {
$message .= "Link directly to photo thumbnail:\n\n";
foreach($url3 as $tmp)
{
$message .= "$tmp\n\n";
}
}
if ($url4 != "") {
$message .= "Link to post the photo in a forum:\n\n";
foreach($url4 as $tmp)
{
$tmp = stripslashes($tmp);
$message .= "$tmp\n\n";
}
}
if ($url5 != "") {
$message .= "Link to post the thumbnail in a forum:\n\n";
foreach($url5 as $tmp)
{
$tmp = stripslashes($tmp);
$message .= "$tmp\n\n";
}
}
if ($url6 != "") {
$message .= "Link to photo in your website:\n\n";
foreach($url6 as $tmp)
{
$tmp = stripslashes($tmp);
$message .= "$tmp\n\n";
}
}
$message .= "\nThank you for using " . $site_name . " for your image hosting.\n\n";
$message .= $site_name . "\n";
$message .= $support_email . "\n";
$headers .= "From: " . $site_name . " <" . $support_email . ">\r\n";
mail($email, $subject, $message, $headers);
$ok = true;
}
?>
Во первых использовать utf-8. Во вторых добавить хидеры:
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: Quoted-printable
Ну и естественно кодировать тело письма как полагается. Если все это китайская грамота лучше использовать готовый класс типа http://swiftmailer.org/
JackDaniels
12.06.2011, 22:42
В заголовке и тексте сообщения кракозябры.
Тема должна быть в BASE64, а тело просто в UTF-8
Talgat Ravilov
12.06.2011, 22:50
Если кому не трудно, ткните меня носом в то место куда надо вписать кодировку и тип данных, в вышевыложенном тексте письма из скрипта. Спасибо!
Тема должна быть в BASE64, а тело просто в UTF-8
Не просто в base64 а в спец формате (Mime Header) типа такого: =?utf-8?Q?=D0=A1=D0=BA=D1=80=D0=B8=D0=BD=D1=8B?=
http://search.cpan.org/dist/Encode/lib/Encode/MIME/Header.pm
http://en.wikipedia.org/wiki/MIME
JackDaniels
12.06.2011, 23:23
Тема должна быть в BASE64, а тело просто в UTF-8
Не просто в base64 а в спец формате (Mime Header) типа такого: =?utf-8?Q?=D0=A1=D0=BA=D1=80=D0=B8=D0=BD=D1=8B?=
http://search.cpan.org/dist/Encode/lib/Encode/MIME/Header.pm
http://en.wikipedia.org/wiki/MIME
Кэп? :biggrin:
vBulletin® v3.8.5, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot