Как получить кодировку сообщения (используя imap с php)
Как получить кодировку сообщения (используя imap с php)
Ответы (2)
Либо проверьте заголовки mime, либо просто перейдите по http://php.net/manual/en/function.imap-utf8.php маршрут. Таким образом, вы будете чертовски уверены, что все, что вы получаете, это UTF-8.
person
Carlos Vergara
schedule
30.03.2011
imap_utf8() декодирует заголовки в кодировке RFC2047, но не помогает с телом сообщения.
- person dkarp; 31.03.2011
На самом деле это не так, поскольку он декодирует 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
Все тела MIME, которые я извлек из злоупотребления классом, который я написал для предыдущего вопроса, я нес некоторые варианты этого: =?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=, который RFC называет закодированными словами. Я понимаю, что они не должны работать таким образом или что-то в этом роде, но все же. Я понимаю, что это анекдотический опыт, но это все же большой его корпус.
- person Carlos Vergara; 09.04.2011
Если подумать, вы также можете использовать mb_detect_encoding($raw_mail, 'auto'); Верно?
- person Carlos Vergara; 09.04.2011
@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
Документы, на которые вы ссылаетесь, не содержат ни charset, ни Content-Type в возвращаемых значениях.
- person dkarp; 31.03.2011