首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在从node-imap接收数据时检查字符串是否为base64编码

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

Stack Overflow用户
提问于 2014-11-04 23:16:29
回答 1查看 2.1K关注 0票数 0

在StackOverflow上有一些关于这个问题的答案,但没有一个对我有效。

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

有谁有有效的解决方案吗?

数据示例

代码语言:javascript
复制
0KHQvdCw0YfQsNC70LAg0YHQvtC30LTQsNC10YLRgdGPINGA0LXRiNC10YLQutCwINC/0YDQvtGB
0YLRgNCw0L3RgdGC0LLQsCDQstC+0L7QsdGA0LDQttC10L3QuNGPLiZuYnNwOzxkaXY+PGJyPjwv
ZGl2PjxkaXY+0JfQsNGC0LXQvCDQvdCwINC90LXQtSDQvdCw0L3QuNC30YvQstCw0LXRgtGB0Y8g
0LLRi9C80YvRgdC10LsuPC9kaXY+PGRpdj48

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

代码语言:javascript
复制
msg.on('body', function(stream, info) { 
  stream.on('data', function(chunk) {
    count += chunk.length;
    buffer += chunk.toString('utf8');
  }
}
EN

回答 1

Stack Overflow用户

发布于 2014-11-05 03:48:31

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

代码语言:javascript
复制
attrs.struct[0].params.charset

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

代码语言:javascript
复制
attrs.struct[0].encoding

对于使用base64编码的消息,将设置为BASE64

因此,我将两个参数都传递给了msg.once('end'),检查attrs.struct.encoding是否为base64,并将这样的字符串从base64转换为utf-8:

代码语言:javascript
复制
statement = new Buffer(email, 'base64').toString('utf8');

其余的则通过

代码语言:javascript
复制
statement = mimelib.decodeQuotedPrintable(email);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26738654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档