import express from 'express'; import nodemailer from 'nodemailer'; import bodyParser from 'body-parser'; import cors from 'cors'; import path from 'path'; import { fileURLToPath } from 'url'; import dotenv from 'dotenv'; // Load environment variables dotenv.config(); const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const app = express(); const PORT = process.env.PORT || 3001; // Changed to 3001 to avoid conflict // Middleware app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(cors()); // Serve static files from the React app build directory // Only serve static files if the dist directory exists const distPath = path.join(__dirname, 'dist'); app.use(express.static(distPath, { maxAge: '1d', etag: false })); // Contact form endpoint app.post('/api/contact', async (req, res) => { const { name, email, phone, message } = req.body; // Validation if (!name || !email || !message) { return res.status(400).json({ success: false, message: 'Please fill in all required fields.' }); } // Validate email format const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { return res.status(400).json({ success: false, message: 'Please provide a valid email address.' }); } try { // Create transporter object using SMTP transport const transporter = nodemailer.createTransport({ // Fixed: createTransporter -> createTransport host: 'smtp.gmail.com', port: 465, secure: true, auth: { user: process.env.EMAIL_USER, // Your Gmail address from environment variables pass: process.env.EMAIL_PASS // Your Gmail App Password from environment variables } }); // Verify transporter configuration await transporter.verify(); console.log('SMTP transporter verified successfully'); // Email content const mailOptions = { from: `"Website Contact Form" <${process.env.EMAIL_USER}>`, to: 'bayan10kh@gmail.com', subject: 'New message from contact form', html: `
Name: ${name}
Email: ${email}
Phone: ${phone || 'Not provided'}
Message:
${message.replace(/\n/g, '
')}
Server is running on port ${PORT}
API endpoint: /api/contact
Email user: ${process.env.EMAIL_USER || 'Not set'}
`); } }); }); app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); console.log(`Email user: ${process.env.EMAIL_USER || 'Not set'}`); });