Не зная, какую конкретно библиотеку IMAP вы используете, помните следующее:
- вы должны специально запросить область действия
mail.google.com
, чтобы получить доступ к электронной почте пользователя - большинство * IMAP-клиентов на JS основе (за исключением нескольких, таких как email js -imap-client) не выполняют автоматическое кодирование токена XOAUTH для вас, и вам нужно будет сделать это вручную, для этого это:
user={email}^Aauth=Bearer {token}^A^A
. Чтобы получить токен ^A
в javascript, вы можете использовать \u0001
следующим образом:
const xoauth2 = `user=${email}\u0001auth=Bearer ${accessToken}\u0001\u0001`
Имейте в виду, что вам также нужно будет закодировать это base64 перед отправкой на сервер, например Итак:
btoa(xoauth2)
Вы также можете проверить правильность своих учетных данных через IMAP. Для подключения используйте следующую команду от клиента bash с установленным openSSL:
openssl s_client -connect imap.gmail.com:993 -crlf
Это откроет сеанс IMAP, где вы можете затем отправлять команды. Пример входа через XOAUTH2 (используя закодированную форму base64, приведенную выше):
? AUTHENTICATE XOAUTH2 dXNlcj1zb21ldGhpbmdAZ21haWwuY29tAWF1dGg9QmVhcmVyIHNvbWVfYWNjZXNzX3Rva2VuAQE=
Сервер ответит OK
и сообщением, если ваши учетные данные верны.