mailapi/index.js

66 lines
1.5 KiB
JavaScript
Raw Permalink Normal View History

2021-11-24 11:02:52 -07:00
'use strict'
2021-11-24 11:19:34 -07:00
require('dotenv').config()
const express = require('express')
var cors = require('cors')
2021-11-24 17:32:01 -07:00
const app = express()
2021-11-26 16:58:39 -07:00
const PORT = process.env.PORT || 8080
2021-11-24 11:19:34 -07:00
2021-11-24 12:37:26 -07:00
const mailer = require('nodemailer').createTransport({
host: process.env.MAIL_SERVER,
2023-04-01 01:37:22 -06:00
port: (process.env.MAIL_USER!=null)?587:25,
2023-04-01 00:00:33 -06:00
auth: (process.env.MAIL_USER!=null)?null:{
2021-11-24 12:37:26 -07:00
user: process.env.MAIL_USER,
pass: process.env.MAIL_PASS,
},
2023-04-01 00:00:33 -06:00
tls: (process.env.MAIL_USER!=null)?null:{
2021-11-25 10:47:37 -07:00
rejectUnauthorized: false,
},
2021-11-24 12:37:26 -07:00
})
// Test mailer
app.get('/', async (req, res) => {
try {
await mailer.verify()
return res.sendStatus(200)
} catch (err) {
return res.status(500).send(err)
}
})
app.use(express.json()).use(cors())
.options('/').post('/', async (req, res) => {
2023-04-01 00:00:33 -06:00
// Parse from address
let from
2023-04-01 00:16:23 -06:00
if (req.body['name'] && req.body['email'])
from = `${req.body['name']} <${req.body['email']}>`
2023-04-01 00:00:33 -06:00
else if (req.body['name']) from = req.body['name']
else if (req.body['email']) from = req.body['email']
else from = 'Anonymous'
2023-04-01 00:16:23 -06:00
// Log it
console.log(`Sending message:
From: ${from}
Subject: ${req.body.subj}\n${req.body.msg}`)
2023-04-01 00:00:33 -06:00
// Send email
let mail_res;
2021-11-24 11:19:34 -07:00
try {
2023-04-01 00:00:33 -06:00
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'],
})
2021-11-24 13:57:54 -07:00
} catch (err) {
2023-04-01 00:00:33 -06:00
console.error(err)
2021-11-24 13:57:54 -07:00
return res.sendStatus(500)
}
2023-04-01 00:16:23 -06:00
console.log(`\t${mail_res.messageId}`)
2023-04-01 00:00:33 -06:00
return res.sendStatus(200)
2021-11-24 17:32:01 -07:00
2023-04-01 00:00:33 -06:00
}).listen(PORT, () => {
2021-11-26 16:58:39 -07:00
console.log(`API listening on ${PORT}`)
2021-11-24 11:02:52 -07:00
})