Проблема с отправкой почты через mail()

Статус
В этой теме нельзя размещать новые ответы.

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
Помучавшись с OpenDKIM (подробнее тут Для просмотра ссылки Войди или Зарегистрируйся), заметил что в письме, в русском тексте, если отправить например
Мы рады видеть Вас на нашем сайте!
на почту приходит

Мы радÑ ‹ видеть Вас на нашем сайте!

И так в нескольких местах русские буквы заменяются на непонятно что.
Сообщения отправляю функцией mail()
Как решить проблему и почему она возникает?

И ещё в шаблоне письма заменяю [email_body] на переменную с русским текстом
Код:
$email_body = str_replace("[email_body]", $lang["email_body"], $email_body);
в переменной $lang["email_body"] - русский текст, в utf-8
может где-то здесь ошибка?
 
А ты до того как ты str_replace делаешь в переменных текст правильный?
 
Как вариант, попробуй использовать вместо str_replace вот эту функцию.
PHP:
<?php
function mb_str_replace($needle, $replacement, $haystack)
{
    $needle_len = mb_strlen($needle);
    $replacement_len = mb_strlen($replacement);
    $pos = mb_strpos($haystack, $needle);
    while ($pos !== false)
    {
        $haystack = mb_substr($haystack, 0, $pos) . $replacement
                . mb_substr($haystack, $pos + $needle_len);
        $pos = mb_strpos($haystack, $needle, $pos + $replacement_len);
    }
    return $haystack;
}
?>

Иногда случаются проблемы с заменой str_replace текста в utf-8.
 
проблема была в том, что письмо я отправлял 1-й строкой длиной ок. 4000-5000 символов (html шаблон письма обрабатывался ф-ей {strip} в смарти), а долбанный postfix не работает с длинными строками видите-ли и делал переносы, добавлял кракозяблы каждые 850-900 символов.
Проблема решилась $email_body = wordwrap($f_email_body, 200);
А я 4 дня копался в конфигах postfix, дким, перепробовал десятки вариантов записи публичного ключа в конфиге домена, думал в этом проблема.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху