Электронный узел-imap получает тело с тегами html - PullRequest
0 голосов
/ 25 мая 2020

Я начал работать с Electron и пытаюсь создать с его помощью почтовый клиент. Я настроил свой базовый c HTML и установил окно в Electron.

Теперь я работаю над получением писем от моей учетной записи gmail (которая работает). Хотя после долгих поисков я нашел следующий код для получения тела (содержимого) электронного письма. Теперь я хотел бы получить тело с тегами HTML и стилем, а не только с текстом. Потому что то, что у меня есть сейчас, дает некоторые странные вещи, такие как '= C2 = A0' (не знаю, что это значит)

Мой текущий код:

window.addEventListener('load', function () {
  const Imap = require('imap'),
    inspect = require('util').inspect;

  let buffer = '';
  let myMap;

  let imap = new Imap({
    user: 'myemail@gmail.com',
    password: 'apassword4email',
    host: 'imap.gmail.com',
    port: 993,
    tls: true,
    tlsOptions: {
      rejectUnauthorized: false,
    },
    connTimeout: 10000,
    authTimeout: 5000,
    debug: console.log,
    mailbox: 'INBOX',
    searchFilter: ['SEEN', 'UNSEEN', 'FLAGGED'],
    markSeen: false,
    mailParserOptions: { steamAttachments: true },
    attachments: true,
    attachmentOptions: { directory: 'attachments/' },
  });

  function openInbox(cb) {
    imap.openBox('INBOX', false, cb);
  }

  imap.once('ready', function () {
    openInbox(function (err, box) {
      if (err) throw err;
      imap.search(['SEEN', ['SINCE', 'May 25, 2020']], function (err, results) {
        if (err) throw err;
        let f = imap.fetch(results, { bodies: '1', markSeen: false });
        f.on('message', function (msg, seqno) {
          console.log('Message #' + seqno);
          console.log('Message type' + msg.text);
          let prefix = '(#' + seqno + ') ';
          msg.on('body', function (stream, info) {
            stream.on('data', function (chunk) {
              buffer += chunk.toString('utf8');
              console.log('BUFFER' + buffer);
            });

            stream.once('end', function () {
              if (info.which === '1') {
                console.log('BUFFER' + buffer);
              }
            });

            console.log(prefix + 'Body');
          });

          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 () {
          console.log('Done fetching all messages!');
          imap.end();
        });
      });
    });
  });

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

  imap.once('end', function () {
    console.log('Connection ended');
  });

  imap.connect();
});

Сейчас я просто получаю все письма, которые я видел сегодня (потому что в учетной записи, которую я использую для тестирования, более 10000 писем)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...