UNPKG

n8n

Version:

n8n Workflow Automation Tool

107 lines 5.06 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NodeMailer = void 0; const nodemailer_1 = require("nodemailer"); const typedi_1 = require("typedi"); const n8n_workflow_1 = require("n8n-workflow"); const config_1 = __importDefault(require("../../config")); const Logger_1 = require("../../Logger"); let NodeMailer = class NodeMailer { constructor(logger) { this.logger = logger; } async init() { const transportConfig = { host: config_1.default.getEnv('userManagement.emails.smtp.host'), port: config_1.default.getEnv('userManagement.emails.smtp.port'), secure: config_1.default.getEnv('userManagement.emails.smtp.secure'), ignoreTLS: !config_1.default.getEnv('userManagement.emails.smtp.startTLS'), }; if (config_1.default.getEnv('userManagement.emails.smtp.auth.user') && config_1.default.getEnv('userManagement.emails.smtp.auth.pass')) { transportConfig.auth = { user: config_1.default.getEnv('userManagement.emails.smtp.auth.user'), pass: config_1.default.getEnv('userManagement.emails.smtp.auth.pass'), }; } if (config_1.default.getEnv('userManagement.emails.smtp.auth.serviceClient') && config_1.default.getEnv('userManagement.emails.smtp.auth.privateKey')) { transportConfig.auth = { type: 'OAuth2', user: config_1.default.getEnv('userManagement.emails.smtp.auth.user'), serviceClient: config_1.default.getEnv('userManagement.emails.smtp.auth.serviceClient'), privateKey: config_1.default .getEnv('userManagement.emails.smtp.auth.privateKey') .replace(/\\n/g, '\n'), }; } this.transport = (0, nodemailer_1.createTransport)(transportConfig); } async verifyConnection() { var _a; if (!this.transport) { await this.init(); } const host = config_1.default.getEnv('userManagement.emails.smtp.host'); const user = config_1.default.getEnv('userManagement.emails.smtp.auth.user'); const pass = config_1.default.getEnv('userManagement.emails.smtp.auth.pass'); try { await ((_a = this.transport) === null || _a === void 0 ? void 0 : _a.verify()); } catch (error) { const message = []; if (!host) message.push('SMTP host not defined (N8N_SMTP_HOST).'); if (!user) message.push('SMTP user not defined (N8N_SMTP_USER).'); if (!pass) message.push('SMTP pass not defined (N8N_SMTP_PASS).'); throw message.length ? new Error(message.join(' '), { cause: error }) : error; } } async sendMail(mailData) { var _a; if (!this.transport) { await this.init(); } let sender = config_1.default.getEnv('userManagement.emails.smtp.sender'); const user = config_1.default.getEnv('userManagement.emails.smtp.auth.user'); if (!sender && user.includes('@')) { sender = user; } try { await ((_a = this.transport) === null || _a === void 0 ? void 0 : _a.sendMail({ from: sender, to: mailData.emailRecipients, subject: mailData.subject, text: mailData.textOnly, html: mailData.body, })); this.logger.verbose(`Email sent successfully to the following recipients: ${mailData.emailRecipients.toString()}`); } catch (error) { n8n_workflow_1.ErrorReporterProxy.error(error); this.logger.error('Failed to send email', { recipients: mailData.emailRecipients, error }); throw error; } return { emailSent: true }; } }; exports.NodeMailer = NodeMailer; exports.NodeMailer = NodeMailer = __decorate([ (0, typedi_1.Service)(), __metadata("design:paramtypes", [Logger_1.Logger]) ], NodeMailer); //# sourceMappingURL=NodeMailer.js.map