Задать вопрос
@Sergey-Dertan
Hz

Почему неверно указана кодировка письма?

Использую вот такой код для отправки писем, но не смотря на то, как бы я не изменял кодировку текста, тело письма выглядит как набор непонятных символов.
Класс mailer - Вот тут
require_once 'class.phpmailer.php';
    $subject = iconv(mb_detect_encoding($subject), 'windows-1251 , $subject);
    $body = iconv(mb_detect_encoding($body), 'windows-1251', $body);
    $subject = '=?windows-1251?B?' . base64_encode($subject) . '?=';
    $mail = new PHPMailer();
    $mail->isSMTP();
    $mail->Host = "mx1.hostinger.ru";
    $mail->SMTPDebug = 2;
    $mail->SMTPAuth = true;
    $mail->Port = порт;
    $mail->Username = "юзер";
    $mail->Password = "пароль";
    $mail->setFrom(($noreply ? 'noreply' : 'mail') . '@мой домен', 'ля ля ля');
    $mail->addReplyTo("мой адрес", "Ля ля ля");
    $mail->Subject = $subject;
    $mail->AltBody = "В письме используется HTML!";
    $mail->msgHTML($body);
    foreach ($users as $user) {
        $mail->addAddress($user);
    }
    if (!$mail->send()) {
        return "Ошибка: " . $mail->ErrorInfo;
    } else {
        return "Отослано!";
    }
  • Вопрос задан
  • 890 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Sergey-Dertan Автор вопроса
Hz
Решил: в топ классе есть свойство Encoding, у меня IDE регистрочувствительная,так что не предлага это.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@d-virt
Ну если обратить внимание на первые две строки, а именно тут:
'windows-1251' . '//IGNORE'
То отсюда следует, что Вы пытаетесь привести в такую кодировку:
windows-1251//IGNORE

Конкатенация строк
Ответ написан
У текстовой и HTML-части должен быть указан Content-Type с соответствующей кодировкой, например
Content-Type: text/html; charset="windows-1251"
скорей всего, у вас кодировка текста (windows-1251) не соответствует кодировке указанной в заголовке соответствующей части.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы