diff --git a/index.js b/index.js
index ead0495..eb19764 100644
--- a/index.js
+++ b/index.js
@@ -206,11 +206,21 @@ exports.processMessage = function(data) {
function(match, from) {
var fromText;
if (data.config.fromEmail) {
- fromText = 'From: ' + from.replace(/<(.*)>/, '').trim() +
- ' <' + data.config.fromEmail + '>';
- } else {
+ if (from.indexOf('<') >= 0 && from.indexOf('>') >= 0) {
+ fromText = 'From: ' + from.replace(/<(.*)>/, '').trim() +
+ ' <' + data.config.fromEmail + '>';
+ } else {
+ // No display name format
+ fromText = 'From: ' + from.replace('@', ' at ').trim() +
+ ' <' + data.config.fromEmail + '>';
+ }
+ } else if (from.indexOf('<') >= 0 && from.indexOf('>') >= 0) {
fromText = 'From: ' + from.replace('<', 'at ').replace('>', '') +
' <' + data.originalRecipient + '>';
+ } else {
+ // No display name format
+ fromText = 'From: ' + from.replace('@', ' at ').trim() +
+ ' <' + data.originalRecipient + '>';
}
return fromText;
});
diff --git a/test/assets/message.simplefrom.processed.txt b/test/assets/message.simplefrom.processed.txt
new file mode 100644
index 0000000..2b78be4
--- /dev/null
+++ b/test/assets/message.simplefrom.processed.txt
@@ -0,0 +1,24 @@
+Received: from example.com (example.com [127.0.0.1])
+ by inbound-smtp.us-west-2.amazonaws.com with SMTP id 81fu1unjk93bm5cb0jlk23fll33spcvf3633l8qg1
+ for info@example.com;
+ Fri, 11 Mar 2016 06:20:55 +0000 (UTC)
+X-SES-Spam-Verdict: PASS
+X-SES-Virus-Verdict: PASS
+Received-SPF: none (spfCheck: 127.0.0.1 is neither permitted nor denied by domain of example.com) client-ip=10.0.0.1; envelope-from=postmaster@example.com; helo=example.com;
+From: betsy at example.com <info@example.com>
+To: info@example.com
+Subject: Test message from Betsy
+Date: Fri, 11 Mar 2016 01:20:54 -0500
+Reply-To: betsy@example.com
+
+This is a test message to info@example.com.
+
+It was sent from betsy@example.com.
+
+These lines should not be affected:
+From: test@example.com
+Reply-To: test@example.com
+Return-Path: test@example.com
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
+ s=gdwg2y3kokkkomn55z2ilkup5wp5hhxx; d=amazonses.com; t=1457977483;
+ h=Date:From:Reply-To:To:Message-ID:Subject:MIME-Version;
diff --git a/test/assets/message.simplefrom.txt b/test/assets/message.simplefrom.txt
new file mode 100644
index 0000000..c4c182a
--- /dev/null
+++ b/test/assets/message.simplefrom.txt
@@ -0,0 +1,35 @@
+Return-Path: <betsy@example.com>
+Received: from example.com (example.com [127.0.0.1])
+ by inbound-smtp.us-west-2.amazonaws.com with SMTP id 81fu1unjk93bm5cb0jlk23fll33spcvf3633l8qg1
+ for info@example.com;
+ Fri, 11 Mar 2016 06:20:55 +0000 (UTC)
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=gdwg2y3kokomn5a55z2ilkup5wp5hhxx; d=amazonses.com; t=1457977483; h=Date:From:Reply-To:To:Message-ID:Subject:MIME-Version:Content-Type;
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
+ s=gdwg2y3kokkkomn55z2ilkup5wp5hhxx; d=amazonses.com; t=1457977483;
+ h=Date:From:Reply-To:To:Message-ID:Subject:MIME-Version:Content-Type:References:Feedback-ID;
+ bh=yu5f22IGBuY/QbF1MYj9KjHbPKMQlS13FY53b5YLEb8=;
+ b=EX4NWAbgp5EuCQ6WzaNg74GiPRxNV/oPWHbd/QAyZmfutsD2Dzr6HYfA2XJ0aEui
+ /RRmYfnjvB8lk3MJRhL/TMHDO/LCWLnXV4OLgkZH6IuVFVZnI2p9pAG11E1AWD9l8AW
+ NTuhRooMHNWMDJgEdo84jnDXIqKSvPR8o0y45M7I=
+X-SES-Spam-Verdict: PASS
+X-SES-Virus-Verdict: PASS
+Message-ID: <duplicit-invalid-messageid@localhost>
+Received-SPF: none (spfCheck: 127.0.0.1 is neither permitted nor denied by domain of example.com) client-ip=10.0.0.1; envelope-from=postmaster@example.com; helo=example.com;
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1457977479; bh=yu5f99IGBuY/QbF1MYj9KjHmHUGQlS13FY53b5YLEb8=; h=Date:From:Reply-To:To:Subject:References:From:Subject; b=Osl8Z/p7lL3v/D60aBh3AJ5coNE6AORIwAEOa66ogh8UI1GLbTo0JgRwN0amg4n8lOU2RJyyNR10+rfx1ciwiP8ypfs0GjllxhgoeXtxCqtsdil5ILvkrxVloOH84tkKDVrvWv0xtZ4S1kOUDVY0EoBnC9xx7dU+WkNA2YmQSQgEji0jb8OeWowvOFxUsIwURewzONCMLm6+ZJqAVVediv6td3U3NRlN3Nfm7IHO8uxvQdDLTbJhqmIx3Ld5x///G9DOkclE+2pHgX0xZwOsbkPsfRRyeDWlrjPWwU2Wm8E481U0CsjmaEbSwk4lkEoFKQH7WfvmULFXftK0YZZMjA==
+From: betsy@example.com
+To: info@example.com
+Subject: Test message from Betsy
+Message-Id: <B9ebWRD-000123-3K@example.com>
+Date: Fri, 11 Mar 2016 01:20:54 -0500
+
+This is a test message to info@example.com.
+
+It was sent from betsy@example.com.
+
+These lines should not be affected:
+From: test@example.com
+Reply-To: test@example.com
+Return-Path: test@example.com
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
+ s=gdwg2y3kokkkomn55z2ilkup5wp5hhxx; d=amazonses.com; t=1457977483;
+ h=Date:From:Reply-To:To:Message-ID:Subject:MIME-Version;
diff --git a/test/assets/message.simplefrom_custom.processed.txt b/test/assets/message.simplefrom_custom.processed.txt
new file mode 100644
index 0000000..f2d9ffb
--- /dev/null
+++ b/test/assets/message.simplefrom_custom.processed.txt
@@ -0,0 +1,24 @@
+Received: from example.com (example.com [127.0.0.1])
+ by inbound-smtp.us-west-2.amazonaws.com with SMTP id 81fu1unjk93bm5cb0jlk23fll33spcvf3633l8qg1
+ for info@example.com;
+ Fri, 11 Mar 2016 06:20:55 +0000 (UTC)
+X-SES-Spam-Verdict: PASS
+X-SES-Virus-Verdict: PASS
+Received-SPF: none (spfCheck: 127.0.0.1 is neither permitted nor denied by domain of example.com) client-ip=10.0.0.1; envelope-from=postmaster@example.com; helo=example.com;
+From: betsy at example.com <noreply@example.com>
+To: info@example.com
+Subject: Test message from Betsy
+Date: Fri, 11 Mar 2016 01:20:54 -0500
+Reply-To: betsy@example.com
+
+This is a test message to info@example.com.
+
+It was sent from betsy@example.com.
+
+These lines should not be affected:
+From: test@example.com
+Reply-To: test@example.com
+Return-Path: test@example.com
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
+ s=gdwg2y3kokkkomn55z2ilkup5wp5hhxx; d=amazonses.com; t=1457977483;
+ h=Date:From:Reply-To:To:Message-ID:Subject:MIME-Version;
diff --git a/test/processMessage.js b/test/processMessage.js
index a6045d3..a0a791b 100644
--- a/test/processMessage.js
+++ b/test/processMessage.js
@@ -30,6 +30,54 @@ describe('index.js', function() {
});
});
+ it('should process email data without display name', function(done) {
+ var data = {
+ config: {},
+ email: {
+ source: "betsy@example.com"
+ },
+ emailData:
+ fs.readFileSync("test/assets/message.simplefrom.txt").toString(),
+ log: console.log,
+ recipients: ["jim@example.com"],
+ originalRecipient: "info@example.com"
+ };
+ var emailDataProcessed = fs.readFileSync(
+ "test/assets/message.simplefrom.processed.txt").toString();
+ index.processMessage(data)
+ .then(function(data) {
+ assert.equal(data.emailData,
+ emailDataProcessed,
+ "processEmail updated email data");
+ done();
+ });
+ });
+
+ it('should process overridden email without display name', function(done) {
+ var data = {
+ config: {
+ fromEmail: "noreply@example.com"
+ },
+ email: {
+ source: "betsy@example.com"
+ },
+ emailData:
+ fs.readFileSync("test/assets/message.simplefrom.txt").toString(),
+ log: console.log,
+ recipients: ["jim@example.com"],
+ originalRecipient: "info@example.com"
+ };
+ var emailDataProcessed = fs.readFileSync(
+ "test/assets/message.simplefrom_custom.processed.txt").toString();
+ index.processMessage(data)
+ .then(function(data) {
+ assert.equal(data.emailData,
+ emailDataProcessed,
+ "processEmail updated email data");
+ done();
+ });
+ });
+
it('should preserve an existing Reply-To header in emails', function(done) {
var data = {
config: {},
@@ -110,7 +158,8 @@ describe('index.js', function() {
source: "betsy@example.com"
},
emailData:
- fs.readFileSync("test/assets/message.from_multiline.source.txt").toString(),
+ fs.readFileSync(
+ "test/assets/message.from_multiline.source.txt").toString(),
log: console.log,
recipients: ["jim@example.com"],
originalRecipient: "info@example.com"