/***************************************************
Пример показывает как получить почту по протоколу POP3
При запуске без параметров - выводит список номеров
сообщений в почтовом ящике.
При передачи параметра (числа) в командной строке
программа - считает конкретное сообщение, за номером
таким-то, из почтового ящика.
Автор: PINGI-PINGI
****************************************************/
#include <string>
#include <iostream>
#include <fstream>
#include "curl/curl.h"
using namespace std;
static char errorBuffer[CURL_ERROR_SIZE];
static string buffer;
// Call Back ф-ия. вызывается каждый раз при приеме данных
static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
int res = 0;
if (buffer != NULL)
{
buffer->append(data, size * nmemb);
res = size * nmemb;
}
return res;
}
int main(int argc, char **argv)
{
string filename = "result.txt";
string link;
string number_of_mail;
link = "pop3://YouLogin:YouPassword@pop.yandex.ru";
if (argc == 2)
{
number_of_mail.assign (argv[1]);
link += "/";
link += number_of_mail;
}
CURL *curl;
CURLcode result;
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
//Задем опции
curl_easy_setopt(curl, CURLOPT_URL, link.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
//Выполняем...
result = curl_easy_perform(curl);
if (result == CURLE_OK)
{
std::ofstream out_file (filename.c_str());
if (out_file.is_open())
{
cout << "Write Data to "<< filename << endl;
out_file << buffer;
}
out_file.close ();
}
else
cout << "Error! " << errorBuffer << endl;
}
curl_easy_cleanup(curl);
return 0;
}
среда, 6 октября 2010 г.
Прием почты с помощью сURL
В последней версии сURL появилась возможность работы с почтовыми протоколами POP3 и SMTP. Вот небольшой пример, как получить почту по протоколу POP3 с яндекса.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий