1
1
mirror of https://github.com/theoludwig/theoludwig.git synced 2024-09-20 06:25:53 +02:00
.profile/pages/api/send-email.ts

62 lines
1.6 KiB
TypeScript
Raw Normal View History

2021-04-18 01:56:23 +02:00
import { NextApiRequest, NextApiResponse } from 'next'
import nodemailer from 'nodemailer'
import validator from 'validator'
const EMAIL_PORT = parseInt(process.env.EMAIL_PORT ?? '465', 10)
const emailTransporter = nodemailer.createTransport({
host: process.env.EMAIL_HOST,
port: EMAIL_PORT,
secure: EMAIL_PORT === 465,
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_PASSWORD
},
tls: {
rejectUnauthorized: false
}
})
const handler = async (
request: NextApiRequest,
response: NextApiResponse
2021-04-18 01:56:23 +02:00
): Promise<any> => {
if (request.method !== 'POST') {
return response.redirect('/404')
2021-04-18 01:56:23 +02:00
}
const { name, email, subject, message } = request.body as {
2021-04-18 01:56:23 +02:00
name: string
email: string
subject: string
message: string
}
if (
validator.isEmpty(name) ||
validator.isEmpty(email) ||
validator.isEmpty(subject) ||
validator.isEmpty(message)
) {
return response.status(400).json({ type: 'requiredFields' })
2021-04-18 01:56:23 +02:00
}
if (!validator.isEmail(email)) {
return response.status(400).json({ type: 'invalidEmail' })
2021-04-18 01:56:23 +02:00
}
try {
await emailTransporter.sendMail({
from: '"Divlo" <contact@divlo.fr>',
to: email,
subject: `Contact - ${validator.escape(subject)}`,
2021-04-18 01:56:23 +02:00
html: `
<b>Name:</b> ${validator.escape(name)} <br/>
<b>Email:</b> ${validator.escape(email)} <br/>
<b>Message:</b> ${validator.escape(message)}
2021-04-18 01:56:23 +02:00
`
})
return response.status(201).json({ type: 'success' })
2021-04-18 01:56:23 +02:00
} catch {
return response.status(500).json({ type: 'serverError' })
2021-04-18 01:56:23 +02:00
}
}
export default handler