forked from djyde/cusdis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathemail.service.ts
39 lines (35 loc) · 1.13 KB
/
email.service.ts
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
import { resolvedConfig } from '../utils.server'
import * as nodemailer from 'nodemailer'
import sgMail from '@sendgrid/mail'
import { statService } from './stat.service'
export class EmailService {
isSMTPEnable() {
return (
resolvedConfig.smtp.auth.user !== undefined &&
resolvedConfig.smtp.auth.pass !== undefined &&
resolvedConfig.smtp.host !== undefined &&
resolvedConfig.smtp.senderAddress !== undefined
)
}
isThirdpartyEnable() {
return resolvedConfig.sendgrid.apiKey
}
get sender() {
return resolvedConfig.smtp.senderAddress
}
async send(msg: { to: string; from: string; subject: string; html: string }) {
if (this.isSMTPEnable()) {
const transporter = nodemailer.createTransport({
host: resolvedConfig.smtp.host,
port: resolvedConfig.smtp.port,
secure: resolvedConfig.smtp.secure,
auth: resolvedConfig.smtp.auth,
})
await transporter.sendMail(msg)
} else if (this.isThirdpartyEnable()) {
sgMail.setApiKey(resolvedConfig.sendgrid.apiKey)
await sgMail.send(msg)
statService.capture('notification_email')
}
}
}