@Woodpcker

Как подключиться к imap gmail?

Есть телеграм-бот, который работает с gmail через imap, но сейчас, как я понял imap изменили.

Каким способом теперь можно подключаться к imap? Я в этом совсем новичок, но хотелось бы разобраться, и прошу помощи.

Взял часть кода js;
setTimeout(() => {
			const imap = new Imap({
			  user: 'gmail@gmail.com',
			  password: password,
			  host: 'imap.gmail.com',
			  port: 993,
			  tls: true
			});


Также пробовал такой метод
auth: {
      type: "OAuth2",
      user: "gmail@gmail.com",
      clientId: 'clienid',
      clientSecret: 'clientSecre,
      accessToken: 'accessToken',
    }
  • Вопрос задан
  • 353 просмотра
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
У Google сейчас политика ограничения сторонних программ. Нужно в аккаунте GMail настраивать доступ для сторонних программ, получать "персональный пароль приложения". Кстати, если посмотрите логи соединения с Google-вским IMAP - увидите там сообщение про это ограничение.
Ответ написан
vajarkov
@vajarkov
Backend Developer
Нашел решение, надо просто вместо пароля от ящика вставить пароль для внешних приложений и все заработало. У меня стоит Imap, но для pop3 думаю примерно так же будет работать судя по описанию на Mail.RU

Пришло письмо c ИВЦ [object Object]
C:\Users\VASHDO~1\AppData\Local\Temp\epls9005.txt
Not file name
EXIT
К письму не приложенны файлы для разбора [ { address: 'finance@cleanf.ru', name: 'Статус - Пополнение' } ]
К письму не приложенны файлы для разбора [ { address: 'security@id.mail.ru', name: 'Mail.ru' } ]
Message #1262
Message #4994
К письму не приложенны файлы для разбора [ { address: 'promo@chitai-gorod.ru', name: 'Читай-город' } ]
Message #1263
Message #1264
К письму не приложенны файлы для разбора [ { address: 'info@i-on.ru', name: 'НОУ-ХАУ' } ]
К письму не приложенны файлы для разбора [ { address: 'support@zaymot.ru', name: 'Возврат средств' } ]
К письму не приложенны файлы для разбора [ { address: 'security@id.mail.ru', name: 'Mail.ru' } ]
Message #1265
Message #4995
Message #1266
Message #1267
Message #4996
ZIbraimova@alseco.kz
UNARCHIVE
Пришло письмо c ALSECO [object Object]


$ yarn start
yarn run v1.22.19
$ ts-node ./src/index.ts
FETCH [
  16933, 16934, 16935, 16936, 16937, 16938, 16939, 16940,
  16941, 16942, 16943, 16944, 16945, 16946, 16947, 16948,
  16949, 16950, 16951, 16952, 16953, 16954, 16955, 16956,
  16957, 16958, 16959, 16960, 16961, 16962, 16963, 16965,
  16966, 16967, 16968, 16969, 16970, 16971, 16972, 16973,
  16974, 16975, 16976, 16977, 16978, 16979, 16980, 16981,
  16982, 16983, 16984, 16985, 16986, 16987, 16988, 16989,
  16990, 16991, 16992, 16993, 16994, 16995, 16996, 16997,
  16998, 16999, 17000, 17001, 17002, 17003, 17004, 17005,
  17006, 17008, 17009, 17010, 17011, 17012, 17013, 17014,
  17015, 17016, 17017, 17018, 17019, 17020, 17021, 17022,
  17023, 17024, 17025, 17026, 17027, 17028, 17029, 17030,
  17031, 17032, 17033, 17034,
  ... 242 more items
]
FETCH [
  6912, 6913, 6914, 6915, 6916, 6917, 6919, 6920, 6922, 6923,
  6924, 6925, 6926, 6927, 6928, 6929, 6930, 6931, 6932, 6933,
  6934, 6935, 6936, 6937, 6938, 6939, 6940, 6941, 6942, 6943,
  6944, 6945, 6946, 6947, 6948, 6949, 6950, 6951, 6952, 6953,
  6954, 6955, 6956, 6957, 6958, 6959, 6960, 6961, 6962, 6963,
  6964, 6965, 6966, 6967, 6968, 6969, 6970, 6971, 6973, 6974,
  6975, 6976, 6977, 6978, 6979, 6980, 6981, 6982, 6983, 6984,
  6985, 6986, 6987, 6988, 6989, 6990, 6991, 6992, 6993, 6994,
  6995, 6996, 6997, 6998, 6999, 7000, 7001, 7002, 7003, 7004,
  7005, 7006, 7007, 7008, 7009, 7010, 7011, 7012, 7013, 7014,
  ... 48 more items
]
NOTHING
Message #1255
Message #1256
Message #1257
mvika@ivc.kz
Пришло письмо c ИВЦ [object Object]


Сам код примерно такой

addAccount(address, host, port, login, password, tls, format, token) {
        const acc = new ImapConnection( {
            user: login,
            password: token,
            host,
            port,
            tls
        });
        acc.format = format
        this.accounts.push(acc)
    }

    exec() {
        this.accounts.forEach(acc => {
            acc.connect()
            acc.on('ready', _ => {
                acc.openBox("INBOX", false, _ => {
                    //this.parseMail(null, acc)
                })

            })
            acc.on('mail', id => {
                this.parseMail(id, acc)
            })
        });
    }


Извиняюсь, что без редакции, но просто получилось, что и хотел, там дальше с обработкой самих писем разбираться надо, поэтому второпях.

Если надо на POP3 переделать, то оно делается примерно аналогично, код могу примерный набросать, если кому надо. Могу поделиться тем, что уже написано, чтобы переделать под себя
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы