44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
|
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<any>,
|
||
|
toArg: string,
|
||
|
dataArg = {}
|
||
|
) {
|
||
|
const message = {
|
||
|
from: smartmailArg.options.from,
|
||
|
to: toArg,
|
||
|
subject: smartmailArg.getSubject(dataArg),
|
||
|
text: smartmailArg.getBody(dataArg),
|
||
|
html: smartmailArg.getBody(dataArg)
|
||
|
};
|
||
|
const response = await this.nodemailerTransport.sendMail(message);
|
||
|
return response;
|
||
|
}
|
||
|
}
|