Как фильтровать письма по отправителю с помощью imap-simple и mailparser на nodejs?

#javascript #node.js #automated-tests #imap

#javascript #node.js #автоматизированные тесты #imap

Вопрос:

Я нашел, как фильтровать по времени и теме, но для почтового объекта нет атрибута типа «отправитель». Приведенный ниже код:

     getMail(mail, pwd, IMAPhost, time, subject, resultHTML) {
      var config = {
        imap: {
          ...
        }
      };

      imaps.connect(config).then(async function (connection) {
        await connection.openBox('INBOX');
        var searchCriteria = ['UNSEEN'];
        var fetchOptions = {
          bodies: ['HEADER', 'TEXT', ''],
        };

        const messages = await connection.search(searchCriteria, fetchOptions);
        messages.forEach(function (item) {
          var all = _.find(item.parts, { "which": "" });
          var id = item.attributes.uid;

          var idHeader = "Imap-Id: "   id   "rn";
          simpleParser(idHeader   all.body, (err, mail) => {
            if (mail.subject === subject amp;amp; time > mail.date) {
              console.log('Время письма '   mail.date);
              return resultHTML(mail.html);
            } 
          });
        });
      });
    }
 

Ниже часть моего вывода all.body (без текущей информации):

 Received: from .qloud-c.yandex.net (.qloud-c.yandex.net)
        by .qloud-c.yandex.net with LMTP
        for <mymail@yandex.ru>; Mon, 18 Jan 2021 18:35:01  0300
Received: from server info (server info [])
        by .qloud-c.yandex.net (mxfront/Yandex) with ESMTPS id ;
Return-Path: sender@mail.ru
From: =?UTF-8?= <sender@mail.ru>
To: mymail@yandex.ru
 

Комментарии:

1. Вам нужна опция извлечения конверта. Это даст вам массивы адресов: от, отправитель, кому и т.д.

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

3. Боюсь, что нет. Я не писал javascript как минимум год, поэтому написание рабочего примера кода заняло бы у меня несколько часов, а у меня нет свободных часов. Извините.

4. Хорошо, спасибо! Нет проблем. Я попробую еще раз.