Hi I would like to send an email to myself from my gatsby site in development. I have tried to follow this guide
I have set up the project like:
/client (gatsby site running on port 8000)
----package.json
server.js (node server running on port 3000)
----package.json
Here is my server.s code:
require("dotenv").config({
path: `.env`,
})
const port = 3000
const bodyParser = require("body-parser")
const express = require("express")
const nodemailer = require("nodemailer")
const morgan = require('morgan')
const app = express()
app.use(morgan('dev'))
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
const contactAddress = "myemail@gmail.com"
const mailer = nodemailer.createTransport({
service: "Gmail",
auth: {
user: process.env.GMAIL_ADDRESS,
pass: process.env.GMAIL_PASSWORD,
},
})
app.get('/', function (req, res) {
res.send('The server is running...')
})
app.post("/contact", function (req, res) {
console.log('post request')
mailer.sendMail(
{
from: req.body.name,
to: [contactAddress],
subject: "Message from website",
html: req.body.message,
},
function (err, info) {
if (err) {
console.log(err)
return res.status(500).send(err)
} else {
//success
console.log('worked')
res.json({ success: true })
}
}
)
})
app.listen(port, () =>
console.log(`Mail server listening on port ${port}!`)
);
The form action is like:
<form css={containerStyle} name="contact" method="post" action="http://localhost:3000/contact">
<FormComponents />
</form>
So far it is not logging to console or sending an email. Any pointers where I am going wrong would help. Thanks.