Node-imap добавляет новое письмо к черновикам

Я использую node-imap, я пытаюсь сохранить электронные письма в черновики, это выглядит так:

        var imap = new Imap({
          user: this.emailUsername,
          password: this.emailPassword,
          host: this.host,
          port: this.port,
          tls: this.tls,
          debug: console.log
        });

        imap.once('ready', function () {
          imap.openBox('inbox.Drafts', false, (err, box) => {
            if (err) throw err;
            let str = "to:" + data.to + " subject:" + data.subject + " body: " + data.body + " text: " + data.body;

            imap.append(str);
          })
        });`

Этот код создает новый черновик электронной почты, но, похоже, я не могу добавить данные в его поля... В нем говорится, что только строки, буфер или массив буферов могут быть переданы в imap.append() в качестве данных. Поэтому я попытался передать JSON.stringify(data) - ничего не добавляется. Когда я передаю его как строку, как показано в коде выше, в поле "to" добавляется только значение "to". Если я изменяю строку следующим образом:

     let str = "to:" + data.to + ", subject:" + data.subject + ", body: " + data.body + ", text: " + data.body;
  //or 
     let str = "to:" + data.to + "; subject:" + data.subject + "; body: " + data.body + "; text: " + data.body;

Все данные добавляются, но все это в поле "к", как:

example@hotmail.com, какой-то предмет, какой-то текст

Какова форма строки, которая должна быть передана в функцию? Я делаю что-то неправильно? Почему imap.append(JSON.stringify(data)) не работает?

1 ответ

Решение

Спасибо @Max за помощь, мне потребовался тип сообщения mime... Я решил это, установив модуль mime message, и использовал его документы. Мой рабочий код выглядит так:

        var mimemessage = require('mimemessage');

        let msg, htmlEntity, plainEntity;

        msg = mimemessage.factory({
          contentType: 'multipart/alternate',
          body: []
        });
        htmlEntity = mimemessage.factory({
          contentType: 'text/html;charset=utf-8',
          body: data.body
        });
        plainEntity = mimemessage.factory({
          body: data.body
        });
        msg.header('Message-ID', '<1234qwerty>');
        msg.header('To', data.to);
        msg.header('Subject', data.subject);
        //msg.body.push(htmlEntity);
        msg.body.push(plainEntity);

        imap.append(msg.toString());
Другие вопросы по тегам