Есть ли способ изменить кодировку заголовков в SwiftMailer?

Я использую SwiftMailer отправлять электронные письма, но у меня есть некоторые проблемы с кодификацией UTF-8 предметы. Swiftmailer использует QPHeaderEncoder по умолчанию кодирует заголовки писем, а safeMap выглядит так, как будто у него есть проблемы с некоторыми UTF-8 Французские персонажи. Один предмет, который я использую, содержит слово Trouvé (встречается на французском языке), и когда субъект попадает к пользователю, он показывает Trouv.

Я хотел бы использовать что-то похожее на NativeQPContentEncoder это доступно в качестве кодировщиков контента, но для заголовков есть только Base64 а также Quoted Printable кодеры.

Есть ли способ исправить это, может быть, я делаю что-то не так, поэтому я вставляю код, который я использую здесь

$message = Swift_Message::newInstance()

// set encoding in 8 bit
->setEncoder(Swift_Encoding::get8BitEncoding())

// Give the message a subject
->setSubject($subject)

// Set the From address with an associative array
->setFrom(array($from => $niceFrom))

// Set the To addresses with an associative array
->setTo(array($to)) ;

2 ответа

Решение

Проверьте, если в вашей конфигурации PHP mbstring.func_overload опция имеет любое значение, кроме 0, Если да, измените его на 0, перезагрузите ваш веб-сервер и попробуйте отправить сообщение снова.

mbstring.func_overload переопределяет некоторые строковые функции PHP и может привести к хитрым ошибкам с UTF-8.

Лично я решил именно эту проблему, отключив mbstring.func_overload,

Во-первых, убедитесь, что вы знаете, как закодирована строка вашего предмета. Если это не UTF-8, тогда utf8_encode() это.

Кроме того, убедитесь, что вы установили Charset('utf-8') ваше сообщение.

Другие вопросы по тегам