Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 89x 56x 41x 53x 15x 15x 15x 10x 56x 56x 56x 54x 54x | import {
createTestAccount,
createTransport,
getTestMessageUrl,
Transporter,
} from "nodemailer";
import SMTPTransport from "nodemailer/lib/smtp-transport";
import { config } from "shared/config";
import { EmailMessage } from "server/features/notifications/senderCommon";
export class EmailSender {
private transport:
| Transporter<SMTPTransport.SentMessageInfo, SMTPTransport.Options>
| undefined;
// Used for testing
private sentMessages: EmailMessage[] = [];
async getTransport(): Promise<
Transporter<SMTPTransport.SentMessageInfo, SMTPTransport.Options>
> {
if (this.transport) {
return this.transport;
}
Iif (process.env.SETTINGS === "production") {
this.transport = createTransport({
host: config.server().emailSMTPHost,
port: config.server().emailSMTPPort,
});
} else {
const account = await createTestAccount();
this.transport = createTransport({
host: config.server().emailSMTPHost,
port: config.server().emailSMTPPort,
auth: {
user: account.user,
pass: account.pass,
},
});
}
return this.transport;
}
getSentEmails(): EmailMessage[] {
return this.sentMessages;
}
async sendEmail(message: EmailMessage): Promise<void> {
const transporter = await this.getTransport();
const info = await transporter.sendMail(message);
Eif (process.env.SETTINGS !== "production") {
this.sentMessages.push(message);
// eslint-disable-next-line no-console
console.log(getTestMessageUrl(info));
}
}
}
|