PDA

Просмотр полной версии : [Проблема] 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;

}

?>

Kane
12.06.2011, 22:37
Во первых использовать 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
Если кому не трудно, ткните меня носом в то место куда надо вписать кодировку и тип данных, в вышевыложенном тексте письма из скрипта. Спасибо!

Kane
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: