node-signed-mailer
Version:
Send emails signed with your S/MIME certificate
46 lines (45 loc) • 1.7 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SignedMailer = void 0;
const nodemailer_1 = require("nodemailer");
const mail_composer_1 = __importDefault(require("nodemailer/lib/mail-composer"));
const sign_1 = require("./sign");
const mailer_helper_1 = require("./utils/mailer-helper");
class SignedMailer {
options;
mailer;
constructor(options) {
this.options = options;
this.mailer = (0, nodemailer_1.createTransport)({
host: options.host,
port: options.port,
auth: {
user: options.auth.user,
pass: options.auth.pass,
}
});
}
async send(options) {
const composer = new mail_composer_1.default({
from: (0, mailer_helper_1.addressToString)(this.options.from),
to: (0, mailer_helper_1.toToString)(options.to),
subject: options.subject,
});
const unsignedBuffer = await (0, mailer_helper_1.getUnsignedBuffer)(composer);
const rawMessage = (0, sign_1.sign)(unsignedBuffer.toString(), {
text: options.text,
html: options.html,
}, this.options.cert.file, this.options.cert.passphrase);
await this.mailer.sendMail({
envelope: {
from: (0, mailer_helper_1.getEmailAddress)(this.options.from),
to: (0, mailer_helper_1.toToEmailAddress)(options.to),
},
raw: rawMessage,
});
}
}
exports.SignedMailer = SignedMailer;
;