UNPKG

node-signed-mailer

Version:

Send emails signed with your S/MIME certificate

46 lines (45 loc) 1.7 kB
"use strict"; 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;