Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Работа с POP3


Автор: alex2011 15.1.2011, 08:59
Hi All.

Помогите написать программу, которая бы забирала сообщения с сервера POP3. Просто "сырое" сообщение в буфер, без разбора его на части, выделения вложений и пр. (это уже я сам буду делать - это мне понятно).
Лучшей помощью был бы хороший пример с комментариями. Или ссылка на такой пример. Желательно бы ещё поменьше C++ - ного кода чтоб было. На "чистом" С хочу, ну это уж как получится...

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

 smile 

Автор: GrayCardinal 15.1.2011, 11:34
http://www.codenet.ru/webmast/pop3.php
этого мало ?  smile

Добавлено через 9 минут и 18 секунд
Цитата

http://ru.wikipedia.org/wiki/POP3#RETR_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D0.B5

"пример сессии"

Автор: alex2011 15.1.2011, 13:02
Цитата

этого мало ?   smile 


Маловато. Этот материал мне известен - вручную telnet - ом пробовал такое не раз. Но это ж надо обернуть всё кодом (см. название форума). Т.е. видимо создать сокет, приконнектиться, послать HELO, проанализировать ответ ну и т.д.  Вероятно, в принципе, я могу такое сделать, скорее всего. Но хороший пример сильно ускорил бы дело и уменьшил число глюков. Велосипед ведь этот давно изобретён, и не один десяток раз, видимо. Ну а уж колесо квадратное вместо круглого я к нему смог бы сам прикрутить за обозримое время  smile 

В общем,  smile 

Автор: GrayCardinal 15.1.2011, 15:39
Гы...
("на коленке", "чистый" Си, проверку ошибок опустил)

Цитата

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main (int argc, char ** argv)
{
    int sd;
    struct sockaddr_in addr;

    sd = socket (AF_INET, SOCK_STREAM, 0);
    // if sd < 0
    memset (&addr, sizeof (struct sockaddr_in), 0);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(23);
    inet_aton ("127.0.0.1", &addr.sin_addr);
    connect (sd, (struct sockaddr *) &addr, sizeof (struct sockaddr_in));

    // send / recv.
    close (sd);
}

Автор: GrayCardinal 15.1.2011, 16:08
А вообще - не ипи мозги и переходи на Go (линк в подписи).

Автор: alex2011 16.1.2011, 08:38
Спасибо всем за советы. Всё же решил пока остановиться вот на этом:
http://libetpan.sourceforge.net/libetpan/
Возможно, выкину оттуда лишнее, а может просто установлю и буду тупо юзать.
Но по крайней мере примеров там выше крыши. 

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

Автор: GrayCardinal 16.1.2011, 11:11
Так тебе лайба нужна была ?  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)