Ответы пользователя по тегу Почтовый сервер
  • Как получить список писем в Node.js?

    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 переделать, то оно делается примерно аналогично, код могу примерный набросать, если кому надо. Могу поделиться тем, что уже написано, чтобы переделать под себя
    Ответ написан
    Комментировать