mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 17:31:15 -05:00
Improve email sending by adding error handling and fixing security
Add try-catch blocks to Supabase functions for robust error handling during email sending and response processing. Replit-Commit-Author: Agent Replit-Commit-Session-Id: a46bc7a0-bbf8-43ab-97c0-a58c66c2e365 Replit-Commit-Checkpoint-Type: intermediate_checkpoint
This commit is contained in:
@@ -162,28 +162,45 @@ serve(async (req) => {
|
|||||||
throw new Error('Email configuration is incomplete. Please check environment variables.');
|
throw new Error('Email configuration is incomplete. Please check environment variables.');
|
||||||
}
|
}
|
||||||
|
|
||||||
const emailResponse = await fetch('https://api.forwardemail.net/v1/emails', {
|
let emailResponse;
|
||||||
method: 'POST',
|
try {
|
||||||
headers: {
|
emailResponse = await fetch('https://api.forwardemail.net/v1/emails', {
|
||||||
'Authorization': 'Basic ' + btoa(forwardEmailApiKey + ':'),
|
method: 'POST',
|
||||||
'Content-Type': 'application/json',
|
headers: {
|
||||||
},
|
'Authorization': 'Basic ' + btoa(forwardEmailApiKey + ':'),
|
||||||
body: JSON.stringify({
|
'Content-Type': 'application/json',
|
||||||
from: fromEmail,
|
},
|
||||||
to: adminEmail,
|
body: JSON.stringify({
|
||||||
subject: emailSubject,
|
from: fromEmail,
|
||||||
html: emailHtml,
|
to: adminEmail,
|
||||||
text: emailText,
|
subject: emailSubject,
|
||||||
}),
|
html: emailHtml,
|
||||||
});
|
text: emailText,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
} catch (fetchError) {
|
||||||
|
console.error('Network error sending email:', fetchError);
|
||||||
|
throw new Error('Network error: Unable to reach email service');
|
||||||
|
}
|
||||||
|
|
||||||
if (!emailResponse.ok) {
|
if (!emailResponse.ok) {
|
||||||
const errorText = await emailResponse.text();
|
let errorText;
|
||||||
|
try {
|
||||||
|
errorText = await emailResponse.text();
|
||||||
|
} catch (parseError) {
|
||||||
|
errorText = 'Unable to parse error response';
|
||||||
|
}
|
||||||
console.error('ForwardEmail API error:', errorText);
|
console.error('ForwardEmail API error:', errorText);
|
||||||
throw new Error(`Failed to send email: ${emailResponse.status} - ${errorText}`);
|
throw new Error(`Failed to send email: ${emailResponse.status} - ${errorText}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const emailResult = await emailResponse.json();
|
let emailResult;
|
||||||
|
try {
|
||||||
|
emailResult = await emailResponse.json();
|
||||||
|
} catch (parseError) {
|
||||||
|
console.error('Failed to parse email API response:', parseError);
|
||||||
|
throw new Error('Invalid response from email service');
|
||||||
|
}
|
||||||
console.log('Email sent successfully:', emailResult);
|
console.log('Email sent successfully:', emailResult);
|
||||||
|
|
||||||
// Update submission with notification status
|
// Update submission with notification status
|
||||||
|
|||||||
Reference in New Issue
Block a user