Как автоматизировать функцию проверки электронной почты в режиме реального времени - PullRequest
0 голосов
/ 08 февраля 2019

Как автоматизировать часть проверки электронной почты с помощью автоматических сценариев.

Клиент настроил свою почту как 'test@gmail.com', он / она входит в приложение.Один раз после каждого успешного входа в систему клиент получает письмо на свой почтовый ящик test @ gmail.Мы создали тестовую учетную запись Gmail и провели валидацию для того же клиента, но в ручном режиме, как обычно, как обычно.Нам также нужна помощь / предложение о том, как автоматизировать эту часть проверки gmail, например, запуск gmail, выбор точной почты после каждого сценария и проверка содержимого тела, что наиболее важно.Пожалуйста, помогите в этом.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

есть много npm-пакетов, которые вам нужно проверить, какой из них будет вам полезен.

  1. nodemailer
  2. mail-lietner
  3. imap и т. Д.

3-й, который я лично предпочел, только что прошел через этот пакет.

Вы также можете попробовать это:

var quotedPrintable = require('quoted-printable');
var utf8 = require('utf8');

var Imap = require('imap'),
    inspect = require('util').inspect;

var imap = new Imap({
  user: 'xxxxxx@gmail.com',
  password: 'xxxxxxx',
  host: 'imap.gmail.com',
  port: 993,
  tls: true
});

function openMail(cb) {
  imap.openBox("[Gmail]/All Mail", true, cb);
}

imap.once('ready', function() {
    openMail(function(err, box) {
      if (err) throw err;
      for(i = 0; i < n; i++){
        var f = imap.seq.fetch((box.messages.total-i) + ':*', { bodies: ['HEADER.FIELDS (FROM)','TEXT']});
          f.on('message', function(msg, seqno) {
            ('Message #%d', seqno);
            var prefix = '(#' + seqno + ') ';
            msg.on('body', function(stream, info) {
              var buffer = '', count = 0;
              stream.on('data', function(chunk) {
                count += chunk.length;
                buffer += chunk.toString('utf8');
              });
              stream.once('end', function() {
                if (info.which !== 'TEXT')
                  (prefix + 'Parsed header: %s', inspect(Imap.parseHeader(buffer)));
                else
                  (prefix + 'Body [%s] Finished', inspect(info.which));

                var bufferPrint = JSON.stringify(quotedPrintable.decode(utf8.decode(buffer)));
              });
            });
          });
      }

      msg.once('attributes', function(attrs) {
        console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8));
      });
      msg.once('end', function() {
        console.log(prefix + 'Finished');
      });

      f.once('error', function(err) {
        console.log('Fetch error: ' + err);
      });
      f.once('end', function() {
        imap.end();
      });
    });
});

imap.once('error', function(err) {
  console.log(err);
});

imap.once('end', function() {});

imap.connect();
0 голосов
/ 08 февраля 2019

Я предлагаю настроить такой инструмент, как https://ngrok.com/, который позволит вам настроить конечную точку для получения трафика.Затем я собрал бы ваше программное обеспечение, позволяющее настраивать конечные точки для таких вещей, как успешный вход в систему, и вы можете установить для этой конечной точки значение b для вашей конечной точки NGrok при входе в систему в качестве тестового пользователя.

...