Node-imap将新电子邮件附加到草稿中

时间:2018-04-18 01:01:48

标签: node.js imap 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(数据) - 没有任何附加内容。当我按照上面的代码中所示的字符串传递它时,只有'到'价值被附加到'到' field ..如果我修改这样的字符串:

     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 个答案:

答案 0 :(得分:0)

感谢@Max的帮助,它需要一个mime消息类型......我通过安装mimemessage module解决了它并使用了它的文档。我的工作代码如下所示:

        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());