Как получить специальные символы тела письма, используя imap с PhP?

0

Я использую imap с php, чтобы получить тело моих писем.

С тем, что закодировано до сих пор, я не получаю специальные символы и странное форматирование в конце. Например, если я отправлю себе электронное письмо (с обычным почтовым клиентом, например Apple Mail), в котором говорится:

Тест с символами é à и некоторыми! эта скала.

Что я получаю с php:

Тест с символами = C3 = A9 = C3 = A0 и некоторые! что камень. =

Я пробовал повторно отправить тело через почтовую функцию php с этими заголовками, но я все еще получаю ту же проблему.

$headers="From: [email protected]" . "\r\n" . "MIME-Version: 1.0" . "\r\n" . "Content-type:text/html;charset=UTF-8";
mail($sendTo, $message, $noBody, $headers);

Я пробовал addslashes(), что тоже не помогло.

Пример моего кода здесь:

$imapLink=imap_open("{".$mailbox."}INBOX",$username,$password);
$mailBoxInfos = imap_check($imapLink);
$mailList = imap_fetch_overview($imapLink,"1:".$mailBoxInfos->Nmsgs);
if(isset($mailList))
{
    $numMess = imap_num_msg($imapLink);
    while($numMess>0) {
        $message = imap_body($imapLink, $numMess);
        $numMess --;
    }
}
$imapClose = imap_close($imapLink);

Надеюсь, ты сможешь мне помочь!

Заранее спасибо!

Артур

Теги:
email
character-encoding

1 ответ

0
Лучший ответ

The =XX вы видите в тексте, называется "Quoted-Printable Content". Он использовался для отображения символа, который не может отображаться в 7-битах.

Вы можете использовать quoted_printable_decode(), чтобы преобразовать его обратно в читаемую строку.

Поэтому это должно работать:

$message = imap_body($imapLink, $numMess);
$message = quoted_printable_decode($message); // <-- add this line
$numMess --;
  • 0
    Работает отлично, спасибо большое, приятель! И если я отправляю специальные символы по электронной почте, это «Content-type: text / html; charset = UTF-8», что я хочу отобразить в своем заголовке? Он работает с моим почтовым провайдером (GMAIL), но некоторые явно не видят акценты в электронных письмах, которые я посылаю через мою систему ...
  • 0
    При использовании charset = UTF-8 вам не нужно кодировать в кодировке для печати в кавычках. Таким образом, сообщение $ будет содержать только допустимые символы UTF-8. Однако если вы хотите отобразить эти символы через PHP, вам также потребуется вывести UTF-8 (или преобразовать в кодировку, которую использует PHP в то время). Например, если вы используете ISO-8859-1 в качестве PHP-вывода, вы можете использовать utf8_decode () для преобразования UTF-8 в ISO-8859-1. (1/2)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню