Drop your details and we'll get back to you. (Sent to info@mysticchapters.com)
// server.js (example)
const express = require('express');
const nodemailer = require('nodemailer');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.post('/send', async (req, res) => {
const { name, email, phone, message } = req.body;
if (!name || !email || !phone) return res.status(400).json({ ok: false, error: 'Missing required fields' });
try {
// Create transporter using Gmail SMTP (recommended: use OAuth2 or App Passwords, NOT your plain password)
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'info@mysticchapters.com',
pass: 'YOUR_GMAIL_APP_PASSWORD' // generate App Password if 2FA enabled
}
});
const mailOptions = {
from: 'Mystic Chapters ',
to: 'info@mysticchapters.com',
subject: `New contact from ${name}`,
text: `Name: ${name}\nEmail: ${email}\nPhone: ${phone}\nMessage:\n${message || '(none)'}`
};
await transporter.sendMail(mailOptions);
res.json({ ok: true });
} catch (err) {
console.error(err);
res.status(500).json({ ok: false, error: 'Server error' });
}
});
app.listen(3000, () => console.log('Server running on http://localhost:3000'));
/* Notes:
- DO NOT store Gmail password in code. Use environment variables.
- If using Gmail, prefer OAuth2 or App Passwords (with 2FA enabled).
- Deploy behind HTTPS (Vercel/Render/Heroku/Netlify functions) for production.
*/