Advertisement
Momir

Untitled

Mar 6th, 2020
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. constexpr auto SEARCH_EMPTY = "* SEARCH\r\n";
  2. constexpr auto USERNAME = "XXXXXXXXXXXXXXXXXXXXXXX";
  3. constexpr auto PASSWORD = "XXXXXXXXXXXXXXXXXXXXXX ";
  4. #include <curl/curl.h>
  5. #include <windows.h>
  6. #include <algorithm>
  7. #include <iostream>
  8. #include <string.h>
  9. #include <stdio.h>
  10. #include <sstream>
  11. #include <queue>
  12. #include <string>  
  13. using namespace std;
  14.  
  15. string buffer;
  16. string curslave("0");
  17. string curdir;
  18. bool optcekaj = 0, cekaj = 1;
  19.  
  20. struct MemoryStruct {
  21.     char *memory;
  22.     size_t size;
  23. };
  24.  
  25. static size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) {
  26.     size_t realsize = size * nmemb;
  27.     struct MemoryStruct *mem = (struct MemoryStruct *)userp;
  28.     char *ptr = (char *)realloc(mem->memory, mem->size + realsize + 1);
  29.     if (ptr == NULL)
  30.         return 0;
  31.     mem->memory = ptr;
  32.     memcpy(&(mem->memory[mem->size]), contents, realsize);
  33.     mem->size += realsize;
  34.     mem->memory[mem->size] = 0;
  35.     return realsize;
  36. }
  37.  
  38. int main(void) {
  39.     CURL *curl;
  40.     CURLcode res = CURLE_OK;
  41.     struct curl_slist *recipients = NULL;
  42.     struct MemoryStruct retr;
  43.     FILE *f;
  44.     fopen_s(&f, "test.txt", "w");
  45.  
  46.     do {
  47.         do {
  48.             curl = curl_easy_init();
  49.         } while (!curl);
  50.         retr.memory = (char *)malloc(1);
  51.         retr.size = 0;
  52.         curl_easy_setopt(curl, CURLOPT_USERNAME, USERNAME);
  53.         curl_easy_setopt(curl, CURLOPT_PASSWORD, PASSWORD);
  54.         curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.gmail.com:993/INBOX");
  55.         curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "SEARCH UNSEEN");
  56.         curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
  57.         curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&retr);
  58.         res = curl_easy_perform(curl);
  59.         if (retr.memory != NULL && retr.size > 0)
  60.             buffer = retr.memory;
  61.         free(retr.memory);
  62.         curl_easy_cleanup(curl);
  63.     } while (res != CURLE_OK);
  64.  
  65.     buffer.erase(remove_if(buffer.begin(), buffer.end(), [](char c) -> bool {return !isdigit(c) && c != ' '; }), buffer.end());
  66.  
  67.     stringstream ss(buffer);
  68.     queue<int> lista;
  69.     int tmp;
  70.     while (ss >> tmp)
  71.         lista.push(tmp);
  72.  
  73.     while (!lista.empty()) {
  74.         FILE *file;
  75.         fopen_s(&file, "test.txt", "w,ccs=UTF-8");
  76.         do {
  77.             do {
  78.                 curl = curl_easy_init();
  79.             } while (!curl);
  80.             curl_easy_setopt(curl, CURLOPT_USERNAME, USERNAME);
  81.             curl_easy_setopt(curl, CURLOPT_PASSWORD, PASSWORD);
  82.             curl_easy_setopt(curl, CURLOPT_URL, ("imaps://imap.gmail.com:993/INBOX/;MAILINDEX=" + to_string(lista.front())).c_str());
  83.             curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);
  84.             res = curl_easy_perform(curl);
  85.  
  86.             curl_easy_cleanup(curl);
  87.         } while (res != CURLE_OK);
  88.         lista.pop();
  89.         fclose(file);
  90.     }
  91.  
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement