54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
const { app, db, globalConfig } = require("../index.js") // Get globals from index
|
|
const { EmailClient } = require("@azure/communication-email");
|
|
const azureEmail = new EmailClient(globalConfig.azure.connectionString)
|
|
|
|
|
|
|
|
app.post("/sendemail", (rreq,rres) => {
|
|
|
|
db.get(globalConfig.azure.authKeyInDb).then(dbres => {
|
|
if (dbres == null) {
|
|
console.log("ERROR: Configured key containing azure authkeys is null")
|
|
rres.sendStatus(500)
|
|
} else {
|
|
let validKeys = dbres.split(',')
|
|
if (validKeys.includes(rreq.get("Authorization"))) {
|
|
|
|
let message = {
|
|
senderAddress: globalConfig.azure.senderAddress,
|
|
content: {
|
|
subject: rreq.body.message.subject,
|
|
plainText: rreq.body.message.content,
|
|
},
|
|
recipients: {
|
|
to: [
|
|
{
|
|
address: rreq.body.recipient.emailAddr,
|
|
displayName: rreq.body.recipient.emailName,
|
|
},
|
|
],
|
|
},
|
|
}
|
|
|
|
|
|
|
|
azureEmail.beginSend(message).then(ares => {
|
|
db.incr(`${globalConfig.azure.usageKeyPrefix}${rreq.get("Authorization")}`)
|
|
console.log(`${rreq.get("cf-connecting-ip")} POST /sendemail returned 200 KEY:${rreq.get("Authorization")}`)
|
|
rres.sendStatus(200)
|
|
}).catch(err => {
|
|
rres.sendStatus(500)
|
|
console.log(err)
|
|
})
|
|
|
|
} else {
|
|
console.log(`${rreq.get("cf-connecting-ip")} POST /sendemail returned 401`)
|
|
rres.sendStatus(401)
|
|
}
|
|
}
|
|
})
|
|
|
|
})
|
|
|
|
|
|
module.exports = {app} // export routes to be imported by index for execution
|