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.
Как работать
- В окне pop3 сервер вводим имя почтового сервера. Я пользуюсь, например, pop.online.ru
- Жмем кнопку Connect и ждем ответа почтового сервера. Если все хорошо, сервер ответит
с индикатором +OK, в этом случае кнопка Login станет доступной. Если проблемы, то сервер ответит с
индикатором -ERR.
- Вводим имя пользователя, пароль и жмем кнопку Login. Произойдет сеанс аутентификации,
результаты которого будут видны в лог-окне. Если все в порядке, то станет доступной кнопка
List и сервер сообщит, что почтовый ящик готов к сеансу, а также укажет количество писем в
почтовом ящике.
- Жмем кнопку List. Сервер укажет, сколько писем лежит в почтовом ящике и их размеры
в октетах.
- Далее станут доступны:
- флажок "все письма" и окно для выбора конкретного письма - здесь следует выбрать либо
конкретное письмо по его номеру, либо отметить галкой "все письма" и выполнять действия
над всеми письмами сразу;
- кнопка Top - просмотр заголовков писем, окно "строки" указывает, сколько строк письма считать
вместе с заголовком;
- кнопка Mail - получение писем;
- кнопка Del - удаление писем;
- кнопка Logout - завершение сеанса.
При получении заголовков или самих писем можно пользоваться радиокнопками KOI-8R и Win-1251.
В этом случае строки, получаемые от сервера, буду перекодированы в нужный формат.
- В главном меню "Файл" можно пользоваться опциями:
- Открыть - загрузить ранее сохраненный лог сеанса в лог-окно;
- Сохранить - сохранить лог сеанса в файл;
- Сохранить фрагмент - сохранить отдельное письмо с последующим его открытием в почтовой
программе:
- Выделяете фрагмент лога от начала письма до завершающей точки.
- В главном меню выбираете "Файл"-"Сохранить фрагмент" и сохраняете фрагмент с расширением
eml.
- Теперь письмо можно открыть любой почтовой программой.
Для правильной перекодировки письма почтовой программой:
при загрузке тела письма в лог-окно должна быть отмечена радиокнопка Win-1251.
- Кнопка Clear очищает окно лога.
Пример полезен для понимания работы сокетов, а также изучения общения почтовых клиента и сервера
по протоколу POP3. Для полного понимания текстов полученных писем необходимо изучить
спецификацию MIME (RFC 2045, 2046, 2047).