MIME 电子邮件多部分解析器
MIME email multipart parser
我正在寻找可以解析我的 IMAP 请求的 node.js 模块 - FETCH 1 BODY[TEXT]。我需要多部分解析器,因为我的消息层次结构很少。
消息示例:
--94eb2c032ec81bf420053483f579
Content-Type: multipart/alternative; boundary=94eb2c032ec81bf411053483f577
--94eb2c032ec81bf411053483f577
Content-Type: text/plain; charset=UTF-8
test
--94eb2c032ec81bf411053483f577
Content-Type: text/html; charset=UTF-8
<div dir="ltr">test</div>
--94eb2c032ec81bf411053483f577--
--94eb2c032ec81bf420053483f579
Content-Type: image/x-icon; name="favicon.ico"
Content-Disposition: attachment; filename="favicon.ico"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ip2cdokt0
AAABAAEAEA8AAAEAIA... THIS IS ATTACHMENT ...A8AcAAPw/AAA=
--94eb2c032ec81bf420053483f579--)
使用 mailparser 我们可以将电子邮件消息的来源解析为结构化对象。它支持多部分级别 - 因此 html/text/attachments 将保留在对象中,我们可以在属性中找到它们。
例如:
const simpleParser = require('mailparser').simpleParser
var f = imap.fetch(results, { bodies: '' })
f.on('message', function (msg, seqno) {
msg.on('body', async function (stream) {
const parsed = await simpleParser(stream)
if (parsed) {
const fromEmail = parsed.from?.value?.[0]?.address
if (fromEmail) {
if (parsed.subject?.length > 0) {
console.log('parsed.subject :>> ', parsed.subject)
}
const lines = parsed.text?.split('\n')
lines.forEach(function (line, indx) {
if (line?.length > 0) {
console.log(`parsed.text[${indx}] :>> `, line)
}
})
} else {
console.warn('No from email found in', parsed)
}
}
})
msg.once('end', function () {
console.log(prefix + 'Finished')
})
})
我正在寻找可以解析我的 IMAP 请求的 node.js 模块 - FETCH 1 BODY[TEXT]。我需要多部分解析器,因为我的消息层次结构很少。
消息示例:
--94eb2c032ec81bf420053483f579
Content-Type: multipart/alternative; boundary=94eb2c032ec81bf411053483f577
--94eb2c032ec81bf411053483f577
Content-Type: text/plain; charset=UTF-8
test
--94eb2c032ec81bf411053483f577
Content-Type: text/html; charset=UTF-8
<div dir="ltr">test</div>
--94eb2c032ec81bf411053483f577--
--94eb2c032ec81bf420053483f579
Content-Type: image/x-icon; name="favicon.ico"
Content-Disposition: attachment; filename="favicon.ico"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ip2cdokt0
AAABAAEAEA8AAAEAIA... THIS IS ATTACHMENT ...A8AcAAPw/AAA=
--94eb2c032ec81bf420053483f579--)
使用 mailparser 我们可以将电子邮件消息的来源解析为结构化对象。它支持多部分级别 - 因此 html/text/attachments 将保留在对象中,我们可以在属性中找到它们。
例如:
const simpleParser = require('mailparser').simpleParser
var f = imap.fetch(results, { bodies: '' })
f.on('message', function (msg, seqno) {
msg.on('body', async function (stream) {
const parsed = await simpleParser(stream)
if (parsed) {
const fromEmail = parsed.from?.value?.[0]?.address
if (fromEmail) {
if (parsed.subject?.length > 0) {
console.log('parsed.subject :>> ', parsed.subject)
}
const lines = parsed.text?.split('\n')
lines.forEach(function (line, indx) {
if (line?.length > 0) {
console.log(`parsed.text[${indx}] :>> `, line)
}
})
} else {
console.warn('No from email found in', parsed)
}
}
})
msg.once('end', function () {
console.log(prefix + 'Finished')
})
})