61 lines
1.7 KiB
JavaScript
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(); |