@zone-eu/mailsplit
Advanced tools
+30
-6
@@ -45,3 +45,3 @@ 'use strict'; | ||
| key = this._normalizeHeader(key); | ||
| let lines = this.lines.filter(line => line.key === key).map(line => line.line); | ||
| let lines = this.lines.filter(line => line.key === key).map(line => this._decodeHeaderValue(line.line)); | ||
@@ -66,3 +66,3 @@ return lines; | ||
| } | ||
| return ((this.libmime.decodeHeader(header.line) || {}).value || '').toString().trim(); | ||
| return ((this.libmime.decodeHeader(this._decodeHeaderValue(header.line)) || {}).value || '').toString().trim(); | ||
| } | ||
@@ -179,13 +179,23 @@ | ||
| let headers = this.lines.map(line => line.line.replace(/\r?\n/g, lineEnd)).join(lineEnd) + `${lineEnd}${lineEnd}`; | ||
| let headers = this.lines | ||
| .map(line => this._buildHeaderLine(line.line.replace(/\r?\n/g, lineEnd))) | ||
| .reduce((joined, line, idx) => { | ||
| if (idx) { | ||
| joined.push(Buffer.from(lineEnd, 'binary')); | ||
| } | ||
| joined.push(line); | ||
| return joined; | ||
| }, []); | ||
| headers.push(Buffer.from(lineEnd + lineEnd, 'binary')); | ||
| if (this.mbox) { | ||
| headers = this.mbox + lineEnd + headers; | ||
| headers.unshift(Buffer.from(this.mbox + lineEnd, 'binary')); | ||
| } | ||
| if (this.http) { | ||
| headers = this.http + lineEnd + headers; | ||
| headers.unshift(Buffer.from(this.http + lineEnd, 'binary')); | ||
| } | ||
| return Buffer.from(headers, 'binary'); | ||
| return Buffer.concat(headers); | ||
| } | ||
@@ -238,2 +248,16 @@ | ||
| } | ||
| _buildHeaderLine(line) { | ||
| let value = this._decodeHeaderValue(line); | ||
| return Buffer.from(value, value === line ? 'binary' : 'utf8'); | ||
| } | ||
| _decodeHeaderValue(str) { | ||
| if (!str) { | ||
| return str; | ||
| } | ||
| let utf8 = Buffer.from(str, 'binary').toString('utf8'); | ||
| return utf8.includes('\uFFFD') ? str : utf8; | ||
| } | ||
| } | ||
@@ -240,0 +264,0 @@ |
+2
-2
| { | ||
| "name": "@zone-eu/mailsplit", | ||
| "version": "5.4.8", | ||
| "version": "5.4.9", | ||
| "description": "Split email messages into an object stream", | ||
@@ -17,3 +17,3 @@ "main": "index.js", | ||
| "libbase64": "1.3.0", | ||
| "libmime": "5.3.7", | ||
| "libmime": "5.3.8", | ||
| "libqp": "2.1.1" | ||
@@ -20,0 +20,0 @@ }, |
71999
1.05%1207
1.68%+ Added
+ Added
- Removed
- Removed
Updated