如何从node-imap接收数据时检查字符串是否为base64编码

时间:2014-11-04 15:16:29

标签: javascript node.js encoding base64

StackOverflow上有一些关于此的答案,但它们都不适用于我。

我有来自Google邮箱导入的混合数据(有些是在utf-8中,有些在base64中)到我的Node.Js应用程序中,我需要检查每个字符串是否在base64中。

有没有人有一个有效的解决方案?

数据示例

0KHQvdCw0YfQsNC70LAg0YHQvtC30LTQsNC10YLRgdGPINGA0LXRiNC10YLQutCwINC/0YDQvtGB
0YLRgNCw0L3RgdGC0LLQsCDQstC+0L7QsdGA0LDQttC10L3QuNGPLiZuYnNwOzxkaXY+PGJyPjwv
ZGl2PjxkaXY+0JfQsNGC0LXQvCDQvdCwINC90LXQtSDQvdCw0L3QuNC30YvQstCw0LXRgtGB0Y8g
0LLRi9C80YvRgdC10LsuPC9kaXY+PGRpdj48

获取它的代码github.com/mscdex/node-imap但我只保留消息文本,即

msg.on('body', function(stream, info) { 
  stream.on('data', function(chunk) {
    count += chunk.length;
    buffer += chunk.toString('utf8');
  }
}

1 个答案:

答案 0 :(得分:1)

问题是我通过Node.Js的node-imap模块接收的数据在参数中包含两个不同的编码参数:

attrs.struct[0].params.charset

将被设置为所有消息的utf-8编码

attrs.struct[0].encoding
对于base64编码中的消息,

将设置为BASE64

所以我将变量中的两个参数传递给msg.once('end'),检查attrs.struct [0] .encoding是否为base64并将这些字符串的转换从base64应用到utf-8:

statement = new Buffer(email, 'base64').toString('utf8');

其余的通过

控制
statement = mimelib.decodeQuotedPrintable(email);