61 lines
1.7 KiB
JavaScript

const emailService = require('../services/email');
const nocoDB = require('../services/nocodb');
class EmailsController {
async sendEmail(req, res, next) {
try {
const { recipientEmail, senderName, senderEmail, subject, message, postalCode } = req.body;
// Send the email
const emailResult = await emailService.sendEmail({
to: recipientEmail,
from: {
email: process.env.SMTP_FROM_EMAIL,
name: process.env.SMTP_FROM_NAME
},
replyTo: senderEmail,
subject: subject,
text: message,
html: `
<p>${message.replace(/\n/g, '<br>')}</p>
<hr>
<p><small>This message was sent via the Alberta Influence Campaign Tool by ${senderName} (${senderEmail}) from postal code ${postalCode}.</small></p>
`
});
// Log the email send event
await nocoDB.logEmailSend({
recipientEmail,
senderName,
senderEmail,
subject,
postalCode,
status: emailResult.success ? 'sent' : 'failed',
timestamp: new Date().toISOString()
});
if (emailResult.success) {
res.json({
success: true,
message: 'Email sent successfully',
messageId: emailResult.messageId
});
} else {
res.status(500).json({
success: false,
error: 'Failed to send email',
message: emailResult.error
});
}
} catch (error) {
console.error('Send email error:', error);
res.status(500).json({
success: false,
error: 'Failed to send email',
message: error.message
});
}
}
}
module.exports = new EmailsController();