From 6efaa1f7d0affe91e0d654fa00943bed8af6ed3c Mon Sep 17 00:00:00 2001 From: Erin Dachtler Date: Sun, 4 Dec 2016 19:27:46 -0800 Subject: [PATCH 1/2] Added DKIM signing options --- package.json | 1 + sendmail.js | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index f3c8a37..1ca6164 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "node": ">=0.6.0" }, "dependencies": { + "dkim-signer": "^0.2.2", "mailcomposer": "^3.10.0" }, "devDependencies": { diff --git a/sendmail.js b/sendmail.js index 6731344..d5baf62 100644 --- a/sendmail.js +++ b/sendmail.js @@ -1,5 +1,6 @@ var tcp = require('net'); var dns = require('dns'); +var DKIMSign = require('dkim-signer').DKIMSign; var CRLF = '\r\n'; function dummy(){} @@ -16,6 +17,8 @@ var exports = module.exports = function(options) { warn: console.warn, error: console.error }) + var dkimPrivateKey = (options.dkim || {}).privateKey + var dkimKeySelector = (options.dkim || {}).keySelector || 'dkim' /* * 邮件服务返回代码含义 Mail service return code Meaning @@ -275,10 +278,18 @@ var exports = module.exports = function(options) { callback(err, null); return; } + if (dkimPrivateKey) { + var signature = DKIMSign(message, { + privateKey: dkimPrivateKey, + keySelector: dkimKeySelector, + domainName: srcHost + }); + message = signature + '\r\n' + message; + } for (var domain in groups) { sendToSMTP(domain, srcHost, from, groups[domain], message, callback); } - }) + }) // COMMENTED OUT BY GP BECAUSE I SAW NO USE FOR IT // var domainsCount = Object.keys(groups).length // var doneCount From 8e4f235a99fbfe28bd01900ecc2b4bc74cbd194f Mon Sep 17 00:00:00 2001 From: Erin Dachtler Date: Sun, 4 Dec 2016 19:55:48 -0800 Subject: [PATCH 2/2] Added DKIM example --- examples/dkim.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 examples/dkim.js diff --git a/examples/dkim.js b/examples/dkim.js new file mode 100644 index 0000000..b244c8a --- /dev/null +++ b/examples/dkim.js @@ -0,0 +1,19 @@ +var fs = require('fs'); +var sendmail = require('../sendmail')({ + silent:true, + dkim: { + privateKey: fs.readFileSync('dkim-private.pem', 'utf-8'), + keySelector: 'mydomainkey' + } +}); + +sendmail({ + from: 'test@yourdomain.com', + to: 'info@yourdomain.com', + replyTo: 'jason@yourdomain.com', + subject: 'MailComposer sendmail', + html: 'Mail of test sendmail ', + }, function(err, reply) { + console.log(err && err.stack); + console.dir(reply); +});