Как получить кодировку сообщения (используя imap с php)

Как получить кодировку сообщения (используя imap с php)


person faressoft    schedule 30.03.2011    source источник


Ответы (2)


Либо проверьте заголовки mime, либо просто перейдите по http://php.net/manual/en/function.imap-utf8.php маршрут. Таким образом, вы будете чертовски уверены, что все, что вы получаете, это UTF-8.

person Carlos Vergara    schedule 30.03.2011
comment
imap_utf8() декодирует заголовки в кодировке RFC2047, но не помогает с телом сообщения. - person dkarp; 31.03.2011
comment
На самом деле это не так, поскольку он декодирует STRINGS, закодированные в RFC2047, независимо от их роли. Этот парень: php.net/manual/en/function.imap -utf8.php#102081 указывает правильное направление. Ваш другой вариант (и жалкий в этом) проверяет, правильно ли ваш почтовый агент получил свои типы содержимого тел MIME. Мины, как правило, говорят что-то вроде: Content-Type: text/html; кодировка = ISO-8859-1 - person Carlos Vergara; 05.04.2011
comment
Все тела MIME, которые я извлек из злоупотребления классом, который я написал для предыдущего вопроса, я нес некоторые варианты этого: =?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=, который RFC называет закодированными словами. Я понимаю, что они не должны работать таким образом или что-то в этом роде, но все же. Я понимаю, что это анекдотический опыт, но это все же большой его корпус. - person Carlos Vergara; 09.04.2011
comment
Если подумать, вы также можете использовать mb_detect_encoding($raw_mail, 'auto'); Верно? - person Carlos Vergara; 09.04.2011
comment
@Carlos: ваш класс накладывает эту кодировку на содержимое части сообщения. Поверь мне в этом. Я пишу почтовые серверы для жизни. Или не доверяйте мне и прочитайте RFC 2045. - person dkarp; 13.04.2011

Вы должны использовать функцию imap_headerinfo(), а затем искать «charset» или даже «Content-Type», используя простой поиск.

http://www.php.net/manual/en/function.imap-headerinfo.php

person Flipper    schedule 30.03.2011
comment
Документы, на которые вы ссылаетесь, не содержат ни charset, ни Content-Type в возвращаемых значениях. - person dkarp; 31.03.2011