Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
SadiQ228
10 / 10 / 6
Регистрация: 16.12.2016
Сообщений: 385
1

CURL авторизация в Gmail для получения списка писем

18.05.2018, 02:02. Просмотров 851. Ответов 5
Метки нет (Все метки)

странные дела не понятные для меня..помогите пожалуйста советом
вот код:
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "string"
#include "stdafx.h"
#define CURL_STATICLIB
#include "curl/curl.h"
#include <locale>
#include <iostream>
#ifdef _DEBUG
# pragma comment (lib, "curl/libcurl_a_debug.lib")
#else
# pragma comment (lib, "curl/libcurl_a.lib")
#endif
#pragma warning(disable : 4996)
using namespace std;
 
 
int main()
{
    const char * login = "test@gmail.com";
    const char * password = "test";
 
        CURL *curl;
        CURLcode res = CURLE_OK;
 
        curl = curl_easy_init();
        if (curl) {
            curl_easy_setopt(curl, CURLOPT_USERNAME, login);
            curl_easy_setopt(curl, CURLOPT_PASSWORD, password);
            curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.gmail.com:993/INBOX/;UID=1");
            curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
            curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
            curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
            res = curl_easy_perform(curl);
            if (res != CURLE_OK)
                fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
            curl_easy_cleanup(curl);
        }
        return (int)res;
}

запускаю, все компилится.
вот лог консоли:
Кликните здесь для просмотра всего текста
* Trying 173.194.***.***...
* TCP_NODELAY set
* Connected to imap.gmail.com (173.194.***.***) port 993 (#0)
* schannel: SSL/TLS connection with imap.gmail.com port 993 (step 1/3)
* schannel: disabled server certificate revocation checks
* schannel: verifyhost setting prevents Schannel from comparing the supplied target name with the subject names in server certificates.
* schannel: sending initial handshake data: sending 188 bytes...
* schannel: sent initial handshake data: sent 188 bytes
* schannel: SSL/TLS connection with imap.gmail.com port 993 (step 2/3)
* schannel: failed to receive handshake, need more data
* schannel: SSL/TLS connection with imap.gmail.com port 993 (step 2/3)
* schannel: encrypted data got 2678
* schannel: encrypted data buffer: offset 2678 length 4096
* schannel: sending next handshake data: sending 93 bytes...
* schannel: SSL/TLS connection with imap.gmail.com port 993 (step 2/3)
* schannel: encrypted data got 379
* schannel: encrypted data buffer: offset 379 length 4096
* schannel: encrypted data length: 95
* schannel: SSL/TLS handshake complete
* schannel: SSL/TLS connection with imap.gmail.com port 993 (step 3/3)
* schannel: stored credential handle in session cache
* schannel: client wants to read 16384 bytes
* schannel: encdata_buffer resized 17408
* schannel: encrypted data buffer: offset 95 length 17408
* schannel: Curl_read_plain returned CURLE_AGAIN
* schannel: encrypted data buffer: offset 95 length 17408
* schannel: decrypted data length: 66
* schannel: decrypted data added: 66
* schannel: decrypted data cached: offset 66 length 16384
* schannel: encrypted data buffer: offset 0 length 17408
* schannel: decrypted data buffer: offset 66 length 16384
* schannel: schannel_recv cleanup
* schannel: decrypted data returned 66
* schannel: decrypted data buffer: offset 0 length 16384
< * OK Gimap ready for requests from 194.226.***.* z4mb42153014ljh
> A001 CAPABILITY
* schannel: client wants to read 16384 bytes
* schannel: encrypted data buffer: offset 0 length 17408
* schannel: encrypted data got 248
* schannel: encrypted data buffer: offset 248 length 17408
* schannel: decrypted data length: 219
* schannel: decrypted data added: 219
* schannel: decrypted data cached: offset 219 length 16384
* schannel: encrypted data buffer: offset 0 length 17408
* schannel: decrypted data buffer: offset 219 length 16384
* schannel: schannel_recv cleanup
* schannel: decrypted data returned 219
* schannel: decrypted data buffer: offset 0 length 16384
< * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER AUTH=XOAUTH
< A001 OK Thats all she wrote! z4mb42153014ljh
> A002 AUTHENTICATE PLAIN MXN0c3Ryb3kubGxjQGdtYWlsLmNvbQAxc3RzdHJveS5sbGNAZ21haWwuY29tAGdvb2dsZTEhMkA=
* schannel: client wants to read 16384 bytes
* schannel: encrypted data buffer: offset 0 length 17408
* schannel: encrypted data got 492
* schannel: encrypted data buffer: offset 492 length 17408
* schannel: decrypted data length: 463
* schannel: decrypted data added: 463
* schannel: decrypted data cached: offset 463 length 16384
* schannel: encrypted data buffer: offset 0 length 17408
* schannel: decrypted data buffer: offset 463 length 16384
* schannel: schannel_recv cleanup
* schannel: decrypted data returned 463
* schannel: decrypted data buffer: offset 0 length 16384
< * NO [WEBALERT https://accounts.google.com/signin/c...ENh00Qth1Vx84] Web login required.
< A002 NO [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure)
* Closing connection 0
* schannel: shutting down SSL/TLS connection with imap.gmail.com port 993
* schannel: clear security context handle
curl_easy_perform() failed: Login denied
Для продолжения нажмите любую клавишу . . .


и на почту приходит письмо вот такого содержания:
Review blocked sign-in attempt
Hi William,
Google just blocked someone from signing into your Google Account test@gmail.com from an app that may put your account at risk.
Less secure app
Friday, May 18, 2018 1:49 AM (Moscow Time)
St Petersburg, Russia*
Don't recognize this activity?
If you didn't recently receive an error while trying to access a Google service, like Gmail, from a non-Google application, someone may have your password.

SECURE YOUR ACCOUNT

Are you the one who tried signing in?
Google will continue to block sign-in attempts from the app you're using because it has known security problems or is out of date. You can continue to use this app by allowing access to less secure apps, but this may leave your account vulnerable.

The Google Accounts team
я не могу коннектить к гуглу по имапу? обязательно oauth2? объясните пожалуйста что происходит
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2018, 02:02
Ответы с готовыми решениями:

Регулярное выражение для получения списка файлов определенного расширения
На С++ нужно из всех файлов выбрать те, которые, к примеру с раширением .txt,...

Получения списка файлов в каталоге
В общем, задача такая, получить список файлов, занести его в вектор,...

IMAP получения отсортированного списка писем
Всем привет. Стоит такая задача. Надо получить ограниченный список (к примеру,...

Создать запрос, для получения авторов писем
Доброго времени суток. У меня в базе есть таблица Messages. Структура такая: ...

Почтовый клиент: программа для получения и чтения писем
Всем привет. Есть некое подобие почтового клиента (точнее программа с простым...

5
Renji
2152 / 1585 / 480
Регистрация: 05.06.2014
Сообщений: 4,606
18.05.2018, 02:44 2
Лучший ответ Сообщение было отмечено SadiQ228 как решение

Решение

Цитата Сообщение от SadiQ228 Посмотреть сообщение
я не могу коннектить к гуглу по имапу? обязательно oauth2? объясните пожалуйста что происходит
Ага, по умолчанию не можете. По не умолчанию - oauth2 отключался через веб-морду Гугла где-то в недрах настройки аккаунта. Где точно уже не помню.
1
SadiQ228
10 / 10 / 6
Регистрация: 16.12.2016
Сообщений: 385
18.05.2018, 02:46  [ТС] 3
а вы могли бы в двух словах описать как коннектить через это штуку? не кодом а словами хотя бы хоть как то?
зачем нам imap и pop3 если их не заюзать?)
0
Renji
2152 / 1585 / 480
Регистрация: 05.06.2014
Сообщений: 4,606
18.05.2018, 02:55 4
Цитата Сообщение от SadiQ228 Посмотреть сообщение
а вы могли бы в двух словах описать как коннектить через это штуку? не кодом а словами хотя бы хоть как то?
Смутно вспоминается что если выбрать oauth2, Thunderbird пытался открыть веб-форму для логина. Но в итоге что-то в этой форме не завелось, я отрубил oauth2 и забыл о нем как о страшном сне.
0
SadiQ228
10 / 10 / 6
Регистрация: 16.12.2016
Сообщений: 385
18.05.2018, 02:58  [ТС] 5
если моя программа, регистрирует gmail и пробует сразу же в него войти, то у меня такая фишка не пройдет и мне придется юзать oauth2?(((
0
Renji
2152 / 1585 / 480
Регистрация: 05.06.2014
Сообщений: 4,606
18.05.2018, 03:04 6
Ну, программа может попробовать сначала отключать oauth2 и только потом заходить. А сразу да, войти не выйдет.
1
18.05.2018, 03:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2018, 03:04

Авторизация curl (различие между curl и ajax запросами)
Есть ли различие в передаче данных в json формате через curl и ajax? Я хочу...

Чтение писем с gmail
Привет! Нужно читать письма с gmail. Понаходил какие-то библиотеки, но...

Авторизация на сайте для парсинга с применением curl
Доброго всем времени суток. Прошу вашей помощи по авторизации с помощью curl на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru