Создание скрипта разбора почты.

Омск

Новичок
Создание скрипта разбора почты.

Вобщем пищу скрипт разбора почты, а именно скрипт запускаеться кроном каждые 10 минут, сохраняет письма в базе. Сделать так решил потому что с почтой раньше работал отправляя их просто mail(...); Сталкнулся с многими проблемами. А именно с коддировками. Вобщем мой хостер предлагает использовать функции imap php4 под апачем 1.2 вроде и все это на виндовс сервер 2003. Мне надо поля: Тема Дата от кого Вес письма Текст письма Вложения и их вес.

Вот что уже сделал:

PHP:
читаем правила
Чтобы посмотреть на письма изнутри отправлял их на мыло с 3-х популярных сервисов почты в инете. Все вроде бы хорошо.
Отправил письма с вложениями и сталкнулся с проблемами. Проблемы более менее решил. Отправил с Outlook Express и это совсем доканало. искал книги по поводу почты в инете. Максимум что нашел Книги почтой на страницах пхп.
Попробую сформулировать вопросы которые меня интересуют.

1.
7BIT
8BIT
BINARY
BASE64
QUOTED-PRINTABLE

Как я понимаю 8bit это читабельная кодировка. Как из каждой кодировки привести в нормальную, которую я могу перевести в win-1251 и в какой кодировке создавать файлы из писем?

2. Как 100% быть увереным что это часть письма текст письма, а эта часть приложеный фаил.

3. Иногда вместе с текстом письма приходят хтмл страницы. Именно как часть письма. Как их вставить на страницу? просто в iframe?

4. Иногда в письмах вместе с текстом приходят изображения(не вложение а просто картинка). Как их(изображения) вставить в страницу?

И какие еще подводные камни могут меня ожидать?

p.s. в английском к сожелению не очень разбираюсь. Просьба если давать ссылки на какой либо материал то желательно на русском. Главное не код. Лучш логику и описание. Заранее всем просмотревшим и ответившим спасибо за любой ответ.

p.s.s. Если кому то мои вопросы покажуться глупыми то сорри, с письмами не рботал. Писал всегда для вап. Для www начал писать месяц назад.
 

Фанат

oncle terrible
Команда форума
Сделать так решил потому что с почтой раньше работал отправляя их просто mail(...);
сначала ответь на вопрос, какое отношение ко всему этому имеет процитированная фраза.

после этого прочти правила.
а потом попробуй ещё раз

-~{}~ 28.02.07 10:14:

Отправил с Outlook Express
а не пробовал сначала принять в Outlook Express? и посмотреть - а что туда вообще пришло?

-~{}~ 28.02.07 10:15:

Если кому то мои вопросы покажуться глупыми то сорри, с письмами не рботал. Писал всегда для вап. Для www начал писать месяц назад.
опять фраза смысл которой для меня остаётся далеко за гранью Упорядоченного.
с письмами не рботал. Писал всегда для вап. Для www начал писать месяц назад
где здесь логика - в упор не вижу...
 

Омск

Новичок
Автор оригинала: Фанат
после этого прочти правила. а потом попробуй ещё раз -~{}~ 28.02.07 10:14:
сначала ответь на вопрос, какое отношение ко всему этому имеет процитированная фраза.
скрипт запускаеться кроном каждые 10 минут, сохраняет письма в базе. Сделать так решил потому что с почтой раньше работал отправляя их просто mail(...);

Помоему проще было бы сразу без базы работать с письмами. Но так как опыта у меня мало, намного больше я работал с базой. В итоге мне проше переносить письма туда. Да и хостер дает мало места под почту.

а не пробовал сначала принять в Outlook Express? и посмотреть - а что туда вообще пришло?
Не пробывал. Но разобрался. Пришел Текст и ХТМЛ страница в одной части не чем не разделенная(боундари)

-~{}~ 28.02.07 10:15:


опять фраза смысл которой для меня остаётся далеко за гранью Упорядоченного.
с письмами не рботал. Писал всегда для вап. Для www начал писать месяц назад
где здесь логика - в упор не вижу...
Если кому то мои вопросы покажуться глупыми то сорри, с письмами не рботал. Писал всегда для вап. Для www начал писать месяц назад.

Спал мало. Нехочу спорить) Но возможно и я не так выразился) Сорри за длинный код. (хотя там разбираться 5 секунд. Помоему все элементарно)
4 вопроса все еще мне интересны.
 

Омск

Новичок
1.
7BIT
8BIT
BINARY
BASE64
QUOTED-PRINTABLE

Как я понимаю 8bit это читабельная кодировка. Как из каждой кодировки привести в нормальную, которую я могу перевести в win-1251 и в какой кодировке создавать файлы из писем?

2. Как 100% быть увереным что это часть письма текст письма, а эта часть приложеный фаил.

3. Иногда вместе с текстом письма приходят хтмл страницы. Именно как часть письма. Как их вставить на страницу? просто в iframe?

4. Иногда в письмах вместе с текстом приходят изображения(не вложение а просто картинка). Как их(изображения) вставить в страницу?

И какие еще подводные камни могут меня ожидать?
 

diamond_krnl

pure-php
проще посматреть кишки любой почтовой системы, через веб, например eCorrei.
 

Фанат

oncle terrible
Команда форума
1. из BASE64 в пхп есть встроенная функция
quoted-PRINTABLE - не помню, нео написать самостоятельно нетрудно.
остальное не нужно.
2. прочитать структуру письма
3. никто не знает, что ты имеешь в виду, поэтому просто найди такое письмо у себя и посмотри у него внутри
4. проще всего - псомтреть как вставлены в уже имеющихся письмах. к примеру послать себе примитивное письмо и посмотреть.
5. любые.

Поверь, пересказывать тебе многостраничный RFC-2045 никто на форуме не будет. не тот формат.
но переводы, кажется, в сети есть.
 

Омск

Новичок
Ок. Спс.

1. Почему не нужно? В других кодировках письма не ходят? Я отправлял себе письмо и часть письма пришла в кодировке 7BIT

2. imap_fetchstructure видимо.
Может кто нить напишет принцип разбора структуры.

3. imap_body

This is a multi-part message in MIME format.

------=_NextPart_000_000A_01C75B08.87066E00
Content-Type: multipart/related;
type="multipart/alternative";
boundary="----=_NextPart_001_000B_01C75B08.87066E00"


------=_NextPart_001_000B_01C75B08.87066E00
Content-Type: multipart/alternative;
boundary="----=_NextPart_002_000C_01C75B08.87066E00"


------=_NextPart_002_000C_01C75B08.87066E00
Content-Type: text/plain;
charset="koi8-r"
Content-Transfer-Encoding: quoted-printable

dfsagdfgdfgdfgkjdf=D7=C1=CC=D0=C4=CC=D7=CF=C1=D0=CC=D7=D4=C1=CC =
=D7=C1=C1=D9=D0=CC=C4=CF


=D7=C1=CC=C4=D4
------=_NextPart_002_000C_01C75B08.87066E00
Content-Type: text/html;
charset="koi8-r"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dkoi8-r">
<META content=3D"MSHTML 6.00.2900.2180" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial =
size=3D2>dfsagdfgdfgdfgkjdf=D7=C1=CC=D0=C4=CC=D7=CF=C1=D0=CC=D7=D4=C1=CC =

=D7=C1=C1=D9=D0=CC=C4=CF</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr style=3D"MARGIN-RIGHT: 0px">
<H4>=D7=C1=CC=C4=D4<IMG alt=3D"" hspace=3D0 =
src=3D"cid:000901c75ad6$3c698d00$2d00a8c0@web"=20
align=3Dbaseline border=3D0></H4></BLOCKQUOTE></BODY></HTML>

------=_NextPart_002_000C_01C75B08.87066E00--

------=_NextPart_001_000B_01C75B08.87066E00
Content-Type: image/bmp;
name="=?koi8-r?B?9M/exd7O2cog0snT1c7Pyy5ibXA=?="
Content-Transfer-Encoding: base64
Content-ID: <000901c75ad6$3c698d00$2d00a8c0@web>

Qk06AAAAAAAAADYAAAAoAAAAAQAAAAEAAAABABgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AA==

------=_NextPart_001_000B_01C75B08.87066E00--

------=_NextPart_000_000A_01C75B08.87066E00
Content-Type: application/octet-stream;
name="=?koi8-r?B?4dLIydcgV2luUkFSLnJhcg==?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="=?koi8-r?B?4dLIydcgV2luUkFSLnJhcg==?="

UmFyIRoHAM+QcwAADQAAAAAAAAA=

------=_NextPart_000_000A_01C75B08.87066E00--


Вот письмо.
------=_NextPart_002_000C_01C75B08.87066E00
Content-Type: text/plain;
charset="koi8-r"
Content-Transfer-Encoding: quoted-printable

dfsagdfgdfgdfgkjdf=D7=C1=CC=D0=C4=CC=D7=CF=C1=D0=CC=D7=D4=C1=CC =
=D7=C1=C1=D9=D0=CC=C4=CF


=D7=C1=CC=C4=D4

это текст. А за этой частью идет часть с хтмл кодом. Причем он не являеться приатаченным файлом. Он именно страница. Как эту страницу вставить в письмо?

4. В этом же письме есть картинка. Мне ее надо просто сохранить у ся на хосте и вставлять в код. Или есть варианты проше?

6. <IMG alt=3D"" hspace=3D0 =
src=3D"cid:000901c75ad6$3c698d00$2d00a8c0@web"=20
align=3Dbaseline border=3D0> Что это за конструкция?

-~{}~ 01.03.07 10:33:

Вобщем скачал mail decode посмотрел. Мало что понял. Просят PEAR.php что это такое хз... Но уже начинаю по маленьку понимать что к чему) И все уже не кажеться настолько глупым) (Это радует) Все еще интересует:

1. Как перевести из 7bit и binary в 8bit. И вобще что то за кодировка 7bit?

2. Вобщем посмотрел еще раз на конструкцию) и понял что надо увеличивать чтобы пройти по всем частям. А так же понял структуру)

3. Просто на основной странице делаем таблицу. В ячейку которой вставляем код страницы которую прислали. Видимо если я прав вопрос закрыт.

4,6. Решил что буду делать так, если вдруг найду у себя что это картинка в странице, то буду в хтмл коде искать конструкцию и заменять ее на истинную. (Конструкцию искать которая в пункте 6.) Или есть какие то варианты чтобы добавить в хтмл код картинку? Или я гоню?
 

Фанат

oncle terrible
Команда форума
чё-та я не понял.
сначала тебе надо было разбирать письма с картинками, а теперь уже вдруг понадобилось отправлять
 

Омск

Новичок
Не не. Мне и сейчас нужно именно разбирать. В куаком месте тя натолкнуло на то что мне нужно отправлять?
 

Фанат

oncle terrible
Команда форума
А, теперь понял. речь идет о вставке на страницу вебмейла.
непонятно, почему ты не можешь зарегистрироваться на парочке бесплатных почт типа яндекса, и посмотреть, как там дселано

-~{}~ 01.03.07 11:44:

из 7bit и binary в 8bit не надо никак.
 

Омск

Новичок
ок.

из 7bit и binary в 8bit не надо никак.

Хм. Что тогда 7BIT и Binary? И в чем различия 7BiT от 8BiT?
 

Омск

Новичок
подумал и решил что буду делать так:

Буду вызывать $tt=imap_bodystruct($mbox, 1, $i) увеличивая $i на 1, при этом буду разбирать $tt[0]->attribute

если NAME значит это фаил.

если CHARSET то проверю $tt->attribute
______если HTML то это вложенная страница
______если PLAIN то это текст.
если BOUNDARY то с помошью $tt[0]->value разделю imap_fetchbody($mbox, 1, $i)
и буду разбирать что в нем текст, что в нем старница(если есть), что в нем встроенные рисунки(опять же если есть)

Так можно сделать?
 

Фанат

oncle terrible
Команда форума
может, ты чуть больше в себя будешь верить, а?
клади в базу рядом с раборранным письмом и исходник.
в случае чего просто подправишь алгоритм.
 
Сверху