Spaces:
Sleeping
Sleeping
File size: 1,847 Bytes
b8466cf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | const express = require('express');
const nodemailer = require('nodemailer');
const cors = require('cors');
require('dotenv').config();
const app = express();
const PORT = process.env.PORT || 7860;
// Middleware
app.use(cors());
app.use(express.json());
// Transporter setup
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_PASS
}
});
// Verify transporter connection
transporter.verify((error) => {
if (error) {
console.log('Error connecting to email service:', error);
} else {
console.log('Server is ready to take messages');
}
});
// Route to send email
app.post('/send-email', async (req, res) => {
const { name, email, phone, message } = req.body;
if (!name || !email || !message) {
return res.status(400).send('Missing required fields');
}
const mailOptions = {
from: process.env.EMAIL_USER,
to: process.env.EMAIL_USER, // or another email
replyTo: email,
subject: 'New Message from Portfolio',
text: `
Name: ${name}
Email: ${email}
Phone: ${phone}
Message:
${message}
`,
html: `
<h3>New Message from Portfolio</h3>
<p><strong>Name:</strong> ${name}</p>
<p><strong>Email:</strong> ${email}</p>
<p><strong>Phone:</strong> ${phone}</p>
<p><strong>Message:</strong></p>
<p>${message}</p>
`
};
try {
await transporter.sendMail(mailOptions);
res.status(200).send('Message sent successfully!');
} catch (error) {
console.error('Error sending email:', error);
res.status(500).send('Failed to send message.');
}
});
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
}); |