Проверка важной почты через cURL
У меня есть программка, которая при наличии непрочитанной почты на GMail мигает иконкой-уведомлением. Просто наличие почты по POP3 через URL pop3s://pop.gmail.com я получаю, но теперь хочу исправить программу и мигать только если есть именно важная мне почта - по from.
Так что хочу добиться следующей функциональности на С++ с использованием cURL - есть аккаунт GMail, я хочу заходить туда, смотреть непрочитанные письма - чтобы понимать, от кого они, и если там есть что-то от важных мне отправителей - давать Notify иконку. При этом почта не должна быть затронута - ну, в смысле, ели зайти почтовой программой по POP3 - то она ее заберет.
Как при этом быть с почтой? Как я понимаю, по POP3 ее нельзя забирать - помешаю почтовой программе.
Наверное, надо через IMAP? Подскажите, как на С++ залезть в GMail, посмотреть входящую непрочитанную почту и скачать заголовки (меня интересует в первую очередь from этих писем), но при этом чтоб не мешать GMail ее потом отдать по POP3. Если покажите где-то пример и описание - было бы отлично.
Пока с таким
curl_easy_setopt(curl_handle, CURLOPT_URL, "imaps://imap.gmail.com/INBOX/");
захожу и ответ получаю, но что в нем искать и как - что-то найти не могу.
Ответы (1 шт):
По POP3 протоколу можно все узнать по перечню сообщений в почтовом ящике и это никак не повлияет на работу почтовой программы, если только вы сами не пометите сообщение для удаления. Я даже не знал, что curl поддерживает pop3, но попробуйте поэкспериментировать с командами, передаваемые в заголовках апи, вот к примеру, удаление письма:
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res = CURLE_OK;
curl = curl_easy_init();
if(curl) {
/* Set username and password */
curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
/* You can specify the message either in the URL or DELE command */
curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
/* Set the DELE command */
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELE");
/* Do not perform a transfer as DELE returns no data */
curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
/* Perform the custom request */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* Always cleanup */
curl_easy_cleanup(curl);
}
return (int)res;
}
https://ru.wikipedia.org/wiki/POP3 Тут примеры команд и ссылки на RFC.