mailapi/index.js

54 lines
1.3 KiB
JavaScript

'use strict'
require('dotenv').config()
const express = require('express')
const app = express()
const PORT = process.env.PORT || 8080
const mailer = require('nodemailer').createTransport({
host: process.env.MAIL_SERVER,
port: (process.env.MAIL_USER!=null)?587:25,
auth: (process.env.MAIL_USER!=null)?null:{
user: process.env.MAIL_USER,
pass: process.env.MAIL_PASS,
},
tls: (process.env.MAIL_USER!=null)?null:{
rejectUnauthorized: false,
},
})
app.use(express.json()).post('/', async (req, res) => {
// Parse from address
let from
if (req.body['name'] && req.body['email'])
from = `${req.body['name']} <${req.body['email']}>`
else if (req.body['name']) from = req.body['name']
else if (req.body['email']) from = req.body['email']
else from = 'Anonymous'
// Log it
console.log(`Sending message:
From: ${from}
Subject: ${req.body.subj}\n${req.body.msg}`)
// Send email
let mail_res;
try {
mail_res = await mailer.sendMail({
from: process.env.MAIL_FROM,
replyTo: from,
to: process.env.MAIL_TO,
subject: req.body['subj'],
text: req.body['msg'],
})
} catch (err) {
console.error(err)
return res.sendStatus(500)
}
console.log(`\t${mail_res.messageId}`)
return res.sendStatus(200)
}).listen(PORT, () => {
console.log(`API listening on ${PORT}`)
})