import * as plugins from './smartsmtp.plugins'; export interface ISmartSmtpOptions { smtpServer: string; smtpUser: string; smtpPassword: string; } /** * Use it to send mails via smtp */ export class Smartsmtp { public nodemailerTransport: plugins.nodemailer.Transporter; constructor(optionsArg: ISmartSmtpOptions) { this.nodemailerTransport = plugins.nodemailer.createTransport({ host: optionsArg.smtpServer, port: 465, secure: true, // upgrade later with STARTTLS auth: { user: optionsArg.smtpUser, pass: optionsArg.smtpPassword, }, }); } /** * sends a SmartMail */ public async sendSmartMail( smartmailArg: plugins.smartmail.Smartmail, toArg: string, dataArg = {} ) { const message: plugins.nodemailer.SendMailOptions = { from: smartmailArg.options.from, to: toArg, subject: smartmailArg.getSubject(dataArg), text: smartmailArg.getBody(dataArg), html: smartmailArg.getBody(dataArg), attachments: [], }; // lets add attachments from smartmailArg for (const attachment of smartmailArg.attachments) { message.attachments.push({ filename: attachment.parsedPath.base, content: attachment.contentBuffer, }); } const response = await this.nodemailerTransport.sendMail(message); return response; } }