39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
// Newsletter signup endpoint — adds email to Listmonk mailing list
|
|
const { addToListmonk } = require('./listmonk');
|
|
|
|
module.exports = async function handler(req, res) {
|
|
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS');
|
|
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
|
|
|
|
if (req.method === 'OPTIONS') {
|
|
return res.status(200).end();
|
|
}
|
|
|
|
if (req.method !== 'POST') {
|
|
return res.status(405).json({ error: 'Method not allowed' });
|
|
}
|
|
|
|
try {
|
|
const { email } = req.body;
|
|
|
|
if (!email || !email.includes('@')) {
|
|
return res.status(400).json({ error: 'Valid email is required' });
|
|
}
|
|
|
|
const emailLower = email.toLowerCase().trim();
|
|
|
|
await addToListmonk(emailLower, '', {
|
|
source: 'newsletter_signup',
|
|
});
|
|
|
|
return res.status(200).json({
|
|
success: true,
|
|
message: 'Successfully subscribed!'
|
|
});
|
|
} catch (error) {
|
|
console.error('Newsletter signup error:', error);
|
|
return res.status(500).json({ error: 'Failed to subscribe. Please try again later.' });
|
|
}
|
|
};
|