Skip to content

Commit 9884e5d

Browse files
committed
fix: filter false values from empty References headers
When an email has an empty References header alongside a populated one, ensureMessageIDFormat returns false for the empty value, resulting in [false, '<id@example.com>'] instead of the expected string output. Fixes #385
1 parent dd71f08 commit 9884e5d

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

lib/mail-parser.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ class MailParser extends Transform {
348348
} catch (E) {
349349
// ignore
350350
}
351-
value = value.split(/\s+/).map(this.ensureMessageIDFormat);
351+
value = value.split(/\s+/).map(this.ensureMessageIDFormat).filter(val => val);
352352
break;
353353
case 'message-id':
354354
case 'in-reply-to':

test/issue-385-test.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
'use strict';
2+
3+
const { simpleParser } = require('..');
4+
5+
module.exports['Issue 385'] = {
6+
'should not include false for empty References header': test => {
7+
let raw = [
8+
'From: sender@example.com',
9+
'To: recipient@example.com',
10+
'Subject: Test',
11+
'References:',
12+
'References: <some.message.id@example.com>',
13+
'MIME-Version: 1.0',
14+
'Content-Type: text/plain',
15+
'',
16+
'Test body'
17+
].join('\r\n');
18+
19+
simpleParser(raw, (err, mail) => {
20+
test.ifError(err);
21+
test.equal(mail.references, '<some.message.id@example.com>');
22+
test.done();
23+
});
24+
}
25+
};

0 commit comments

Comments
 (0)