SocketClient пример POP3-сессии.

© Терехов А В. 2003


Вступление

Здесь рассматривается практическое применение программирования сокетов на примере POP - сессии (получение писем от почтового сервера). Прежде рекомендуется прочитать статью SoketClient для непродвинутых - вся теория там. Кроме этого неплохо прочитать спецификацию RFC 1939, которая приложена к примеру.
Часть кода в примере списана с программного кода компонента:
TCP/IP Component Pack  (Version 0.2beta of 1997-06-30)
ah@scp.de                (at work)
andreas@hoerstemeier.de  (at home)
http://www.westend.de/~hoerstemeier
snail mail: Andreas Horstemeier
            Mefferdatisstrasse 16-18
            52062 Aachen
            Germany
В компоненте было использовано побайтное чтение из сокета. В примере чтение происходит через буфер размером 1024 байта, что по моему мнению значительно увеличивается производительность чтения почты, а, следовательно, уменьшает время Dial-Up.

Как работать

  1. В окне pop3 сервер вводим имя почтового сервера. Я пользуюсь, например, pop.online.ru
  2. Жмем кнопку Connect и ждем ответа почтового сервера. Если все хорошо, сервер ответит с индикатором +OK, в этом случае кнопка Login станет доступной. Если проблемы, то сервер ответит с индикатором -ERR.
  3. Вводим имя пользователя, пароль и жмем кнопку Login. Произойдет сеанс аутентификации, результаты которого будут видны в лог-окне. Если все в порядке, то станет доступной кнопка List и сервер сообщит, что почтовый ящик готов к сеансу, а также укажет количество писем в почтовом ящике.
  4. Жмем кнопку List. Сервер укажет, сколько писем лежит в почтовом ящике и их размеры в октетах.
  5. Далее станут доступны: При получении заголовков или самих писем можно пользоваться радиокнопками KOI-8R и Win-1251. В этом случае строки, получаемые от сервера, буду перекодированы в нужный формат.
  6. В главном меню "Файл" можно пользоваться опциями: Для правильной перекодировки письма почтовой программой:
    при загрузке тела письма в лог-окно должна быть отмечена радиокнопка Win-1251.
  7. Кнопка Clear очищает окно лога.

Пример полезен для понимания работы сокетов, а также изучения общения почтовых клиента и сервера по протоколу POP3. Для полного понимания текстов полученных писем необходимо изучить спецификацию MIME (RFC 2045, 2046, 2047).