Запросы cURL IMAP приводят к множеству неправильных ответов учетных данных? - PullRequest
0 голосов
/ 09 января 2020

У меня есть часть C ++, которая делает вызовы IMAP (чтобы прочитать содержимое почтового ящика). Это прекрасно работает большую часть времени. Однако бывают периоды, когда я получаю много invalid credential (CURLE_LOGIN_DENIED ) ответов от cURL, в то время как я проверяю и имя пользователя, и пароль (они верны, то же самое с действительными вызовами).

Тем не менее, ответ IMAP дает мне Invalid credentials -ответ. Почтовый ящик размещен на Office365, поэтому я не думаю, что узким местом здесь является сервер, поскольку он большой игрок?

Что может быть не так? Я выполнял отладку в течение нескольких дней, но не могу найти проблему.

Примечание: даже если я установил жестко закодированную комбинацию имени пользователя и пароля, иногда она все равно дает сбой. Так что, похоже, он связан с сервером?

cURL-запрос:

string CurlContent;
CURL *curl = curl_easy_init();
struct curl_slist *LibcurlHeaders = NULL;
if (curl) {
    string host = [IMAP ADDRESS HERE];
    LibcurlHeaders = curl_slist_append(LibcurlHeaders, "Expect:");
    curl_easy_setopt(curl, CURLOPT_URL, host.c_str());
    curl_easy_setopt(curl, CURLOPT_USERNAME, [USERNAME HERE]);
    curl_easy_setopt(curl, CURLOPT_PASSWORD, [PASSWORD HERE]);
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, LibcurlHeaders);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, LibcurlResponse);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &CurlContent);
    CURLcode res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
    curl_slist_free_all(LibcurlHeaders);
    if (res == CURLE_OK) {
        //ALL FINE
        }
    else if (res == CURLE_LOGIN_DENIED) {
        //INVALID CREDENTIALS. THIS HAPPENS A LOT FOR CERTAIN PERIODS
        }
    else if (res == CURLE_OPERATION_TIMEDOUT) {
        //TIMEOUTS SOMETIMES OCCUR AS WELL
        }
    else {
        //UNSPECIFIED ERROR. NEVER OCCURS
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...