Статьи,обзоры,справочники по PHP

       

-- II --Теория


Итак, мы пишем робота. Как мы определились выше, это будет программа на PHP, которая должна анализировать письма. Разумеется, не все сразу, а по очереди. Нам могут дать почту в двух видах: либо один файл с кучей писем (от 0 писем и более), либо файл с одним письмом (не более 1 письма). Второе разумеется удобнее, но не всегда доступно.

Давайте посмотрим из чего состоит одно письмо. Пример:



From dima@php.spb.ru Fri Jun 15 03:01:23 2001 Received: from host (host [195.220.4.134]) by php.spb.ru with ESMTP id f5EN1NJ04208 for ; Fri, 15 Jun 2001 03:01:23 +0400 Date: Fri, 15 Jun 2001 02:49:28 +0400 From: Dmitry Borodin

X-Mailer: The Bat! (v1.51) Educational X-Priority: 3 (Normal) Message-ID:

To: testmail@php.spb.ru MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 8bit

Текст письма. Текст письма. Текст письма.


Давайте усвоим, что почтовый робот в данной статье - это программа, которая должна уметь получтать письма в виде файла (текст-примера выше). Как разбить данный текст на заголовок и тело, как вырезать из заголовока поля - это все относится к программированию, а не к веб-технологиям. Мы тут изучаем именно технологии.

В письме есть заголовок и тело. Заголовок идет с первой строки. Тело отделено от заголовка пустой строкой. Если вам дают файл с множеством писем, то письма разделяются довольно просто. Если строка начинается со слова "From "

(5 символов, включая пробел) - то это начало нового заголовка. Да, хоть это и невероятно, но именно так письма можно разделить между собой. Возникает вопрос - а не может ли слово "From" встретиться в тексте письма? Нет. Может встетиться "From:" или еще что, но "From" с пробелом не встретиться. Возникает следующий вопрос - а нельзя ли в тексте письма вставить кучу слов "From" (с пробелом) и нарушить работу вражеского почтового сервера? Тоже нельзя :-) Умный сервер заменит "From" на ">From".



Содержание раздела