Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Соединение с POP3 и через сокеты и чтение тела письма
то есть убрались переносы строк, появились символы "= " (или это и есть переносы, но не там, где надо почему-то), и в последней строке символ "==" заменился на символ "=3D=3D"...
Как можно получить в переменную многострочное тело письма с переносами строк (в том же виде, в каком отправляется), чтобы потом функцией explode() разбить это сообщение на строки для анализа???
Nestor
Отправлено: 30 Ноября, 2009 - 11:42:59
Частый гость
Покинул форум
Сообщений всего: 220
Дата рег-ции: Март 2009
А как работать с многострочным телом письма?
Стандарт MIME подразумевает разбиение строк в теле письма по 76 символов с использованием "мягких переносов" (знак "=")... А как обработать эту ситуацию?
JustUserR
Отправлено: 30 Ноября, 2009 - 20:58:58
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
ViTYAi
Отправлено: 01 Декабря, 2009 - 12:23:51
Новичок
Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
JustUserR пишет:
А это случаное не URL-decoded символы только со знаком = вместо %
затрудняюсь ответить, а если так, то что с ними делать?
JustUserR пишет:
И вообще где сами заголовки письма - ведь они обычно multipart
Читал...
Про ограничение строки в 76 символов написано в стандарте MIME...
У меня письмо без вложений и нформация содержится в теле письма!
Не пойму, как от этого избавиться?
JustUserR
Отправлено: 01 Декабря, 2009 - 12:44:30
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
ViTYAi Да это обычное multipart-сообщение - соответственно чтобы вручную его считать необходимо разбить его на части по boundaryпотом поределить тип части писать и раскодировать содержимое для текстовых частей (Вроде как = заменяется на % и делается фукнция urldecode)
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
ViTYAi
Отправлено: 02 Декабря, 2009 - 04:24:30
Новичок
Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
JustUserR пишет:
чтобы вручную его считать необходимо разбить его на части по boundary
что такое boundary? Граница чего?
JustUserR пишет:
поределить тип части
Что за тип? У меня письм без вложений, просто многострочное сообщение в теле письма (текст).
JustUserR пишет:
раскодировать содержимое для текстовых частей (Вроде как = заменяется на % и делается фукнция urldecode)
Пробовал раскодировать тело письма, предварительно заменив "=" на "%".
В итоге "=3D=3D" заменилось на "==", но "мягкие переносы" строк остались...
JustUserR
Отправлено: 02 Декабря, 2009 - 21:51:43
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
ViTYAi пишет:
Что такое boundary? Граница чего?
Что за тип? У меня письм без вложений, просто многострочное сообщение в теле письма (текст).
Насколько мне известно исторически сложилось все практически все email письма даже без вложений пересылаются в multipart-формате
Что такое по сути multipart-формат - обычно какойто высылаемый серверов контент идет в следующем виде - заголовки (В том числе тип контента + дата время + длина контента + другая инфорация) + пустая строка + идет контент который может содержать любые символы - ибо все равно он ограничен известной длиной
Можно несколько пересылаемый данных со своими собственными заголовками всунуть в один общий multipart-формат - при это формат основного контент multipart а внутри него уже более мелкие контены работающеие по вышеуказанной схеме Но как их разделить между собой - ведь они внутри могут содержеать абсолютьно произвольные данные
Именно поэтому придумали boundary - разделитель-строка которая указывается в multipart-сообщении и потом выводится в формате --СТРОКА для разделениме передаваемого контента
ViTYAi пишет:
Пробовал раскодировать тело письма, предварительно заменив "=" на "%".
В итоге "=3D=3D" заменилось на "==", но "мягкие переносы" строк остались...
Что касается вашей основной проблемы у меня есть несколько идей
Когда я увидел ваш е сообщение то заметил что в нем символы обозначаются не 2 а 4 цифрами что похоже не на ASCII а на юникод - то есть по сути вы работаете с multibyte-строками которые для своей работы требудет отдельных функций
Так что замену вероятно надо проводить с помощью них - часть информации есть тут http://php.su/functions/?cat=mbstring
Также вероятно у вас имеются езе какието проблемы с кодировками
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.