Implement actual email sending, with nodemailer!

This commit is contained in:
Badri Sunderarajan 2021-06-04 23:14:23 +05:30
parent b1f69e16f6
commit 4b388e1a1b
4 changed files with 58 additions and 11 deletions

5
.sample-env Normal file
View File

@ -0,0 +1,5 @@
CHIPCHOC_EMAIL_HOST=mail.example.com
CHIPCHOC_EMAIL_PORT=587
CHIPCHOC_EMAIL_SECURE=false
CHIPCHOC_EMAIL_USER=user@example.com
CHIPCHOC_EMAIL_PASSWORD=badexample

View File

@ -19,10 +19,11 @@
},
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^8.2.0",
"dotenv": "^10.0.0",
"express": "^4.17.1",
"express-ws": "^4.0.0",
"importabular": "^0.2.9",
"nodemailer": "^6.6.1",
"showdown": "^1.9.1",
"sirv-cli": "^1.0.0"
}

View File

@ -1,11 +1,34 @@
const express = require('express')
const nodemailer = require('nodemailer')
require('dotenv').config()
let DEBUG
if (process.env.DEBUG || process.env.CHIPCHOC_DEBUG) {
DEBUG = true
} else {
DEBUG = false
}
if (DEBUG) console.log('Starting ChipChoc in debug mode')
// set up nodemailer
const perumal = nodemailer.createTransport({
// (that's the name of badri's postmaster, in case you were wondering ;)
host: process.env.CHIPCHOC_EMAIL_HOST,
port: process.env.CHIPCHOC_EMAIL_PORT || 587,
secure: process.env.CHIPCHOC_EMAIL_SECURE == 'false' ? false : true,
auth: {
user: process.env.CHIPCHOC_EMAIL_USER,
pass: process.env.CHIPCHOC_EMAIL_PASSWORD,
},
})
const app = express()
var expressWs = require('express-ws')(app)
const port = process.env.port || 5000
const port = process.env.CHIPCHOC_PORT || 5000
const cors = require('cors')
const path = require('path')
@ -20,10 +43,11 @@ app.get('/air', (req, res) => {
})
})
app.ws('/hit-send', (ws, request) => {
console.log('Hitting send on some emails!')
ws.on('message', (message) => {
ws.on('message', async (message) => {
try {
message = JSON.parse(message)
} catch(err) {
@ -34,11 +58,23 @@ app.ws('/hit-send', (ws, request) => {
return
}
console.log(`\n\n-------------------------- BEGIN EMAIL --------------------------\n`)
console.log(`From: ${message.from}\nTo:${message.to}\n\n${message.text}`)
console.log(`\n--------------------------- END EMAIL ---------------------------`)
if (DEBUG) {
console.log(`\n\n-------------------------- BEGIN EMAIL --------------------------\n`)
console.log(`From: ${message.from}\nTo:${message.to}\n\n${message.text}`)
console.log(`\n--------------------------- END EMAIL ---------------------------`)
} else {
console.log(`Sending email: ${message.from} -> ${message.to}`)
// TODO: actually send the email
// actually send the email
let receipt = await perumal.sendMail({
from: message.from || process.env.CHIPCHOC_DEFAULT_SENDER,
to: message.to,
bcc: message.from || process.env.CHIPCHOC_DEFAULT_SENDER,
text: message.text,
html: message.html,
})
}
setTimeout(() => {
ws.send(JSON.stringify({

View File

@ -313,10 +313,10 @@ destroy@~1.0.4:
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
dotenv@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
dotenv@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
ee-first@1.1.1:
version "1.1.1"
@ -732,6 +732,11 @@ negotiator@0.6.2:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
nodemailer@^6.6.1:
version "6.6.1"
resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.1.tgz#2a05fbf205b897d71bf43884167b5d4d3bd01b99"
integrity sha512-1xzFN3gqv+/qJ6YRyxBxfTYstLNt0FCtZaFRvf4Sg9wxNGWbwFmGXVpfSi6ThGK6aRxAo+KjHtYSW8NvCsNSAg==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"