eml-parser-buffer
v1.0.1
Published
eml parser, buffer
Downloads
2
Readme
node-eml-parser-buffer
说明
网址: https://gitee.com/linuxmail/node-eml-parser-buffer/
邮件解析库, 充分考虑字符集问题, 本库作者认为: 有大量的邮件含有8bit文字,而这些文字不是UTF-8编码
特别说明
下划线(_)开头的属性和函数是私有的,不应该使用
接口
// new emlParser 的参数
export interface parserOptions {
emlData: Buffer;
debug?: boolean;
}
// 邮件头行,字符串节点
export interface tokenNode {
data: Buffer;
charset: string;
}
// 邮件头行的,值和键值对
export interface mimeValueParams {
value: Buffer;
params: {
[key: string]: Buffer;
};
}
// 邮件头行
export interface mimeLine {
name: string;
value: Buffer;
}
// 邮件地址
export interface mimeAddress {
name: string;
address: string;
}
// 未解码的邮件地址
export interface mimeAddressDecoder {
nameBuffer: Buffer;
address: string;
}
用法
参考, examples/ 例子
const emlParser = require("eml-parser-buffer")
CLASS emlParser
emlData, 是 Buffer, 不能是 String
var options = {
emlData: fs.readFileSync("somepath") // 应该是 Buffer
}
var parser = new emlParser.emlParser(options)
emlParser 的属性如下:
subject: null | string
from: null | mimeAddress
to: null | mimeAddress[]
cc: null | mimeAddress[]
bcc: null | mimeAddress[]
messageId: null | string
date: null | string
dateUnix: number
sender: null | mimeAddress
replyTo: null | mimeAddress
dispositionNotificationTo: null | mimeAddress
references: null | (string[])
topNode: mimeNode
emlParser 的 get 属性如下:
// 所有的Mime节点
get allNodes(): mimeNode[]
// 所有的可显的正文文本节点
get textNodes()
// 所有优先显示的正文文本节点(优先html)
get alternativeShowNodes()
//所有的附件节点
get attachmentNodes()
emlParser 的方法
// 返回第一个名字是name的邮件头行
getFirstHeaderLine(name: string)
CLASS mimeNode
邮件 Mime 结构的节点类
mimeNode 的属性如下:
parser: emlParser
headerStartPos: number
headerLength: number
headers: mimeLine[]
bodyStartPos: number
bodyLength: number
contentType: string
encoding: string
charset: string
name: string
filename: string
contentId: string
disposition: string
boundary: string
parent: null | mimeNode
childs: null | mimeNode[]
mimeNode 的 get 属性如下:
// 是否内嵌(图片)附件
get isInline()
// 是否是 TNEF 类型附件
get isTnef()
// (如果是 TEXT/* 类型)获取解码并字符集转码后的文本
get textContent(): string
mimeNode 的方法
// 获取解码后的附件内容
getDecodedBuffer(): Buffer
// 获取名字为name的第一个 Mime 头行
getFirstHeaderLine(name: string): null | mimeLine
其他工具函数
// 解码 rfc2231 规范的文件名/属性值等
function decode2231(data: Buffer, withCharset: boolean): tokenNode[];
// 如上, 并转码为字符串
function decode2231ToString(data: Buffer, withCharset: boolean): string;
// 在一堆params里面, 转码键为name的值并转码为字符串
function decodeParamValueToString(params: { [name: string]: Buffer; }, name: string): string;
// 解析邮件头行
function decodeValue(line: Buffer): tokenNode[];
// 如上, 并转码为字符串
function decodeValueToString(line: Buffer): string;
// 解析邮件头行
function decodeLineToValueAndParams(line: Buffer): mimeValueParams;