Пользуюсь узел-imap, пытаюсь сохранять письма в черновики, это выглядит так:
var imap = new Imap({
user: this.emailUsername,
password: this.emailPassword,
host: this.host,
port: this.port,
tls: this.tls,
debug: console.info
});
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;
Все данные добавляются, но все они помещаются в поле «Кому», например:
[email protected], some subject, some body-text
Какую форму строки следует передать в функцию? Я делаю что-то неправильно? Почему imap.append (JSON.stringify (data)) не работает?
@Max попробует это утром, ты
@Max Сделал так, чтобы он работал с другим модулем mimemessage .. большое спасибо
Вы можете самостоятельно ответить на свой вопрос, указав подробности того, что вам нужно для работы. Я не знаю node (или даже JS), поэтому не могу дать исчерпывающий ответ.
Сделаю через мин.





Спасибо @Max за помощь, для этого требовался тип сообщения mime ... Я решил это, установив модуль mimemessage и использовал его документы. Мой рабочий код выглядит так:
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());
Потому что это формат пантомимы? Создайте сообщение MIME. Как минимум, между строками заголовка должен быть "\ r \ n".