From 4b968099ad48b99844bf5fced6c4dd48f2c4195b Mon Sep 17 00:00:00 2001 From: Bangara Raju Kottedi Date: Mon, 16 Feb 2026 11:44:31 +0530 Subject: [PATCH] Improve error handling and logging for mail and OTP endpoints Updated AuthController and CvController to return exception messages in 500 responses and enhanced logging. MailService now throws descriptive exceptions on email send failures, allowing upstream error reporting and preserving failed messages. --- PortBlog.API/Controllers/AuthController.cs | 2 +- PortBlog.API/Controllers/CvController.cs | 4 ++-- PortBlog.API/Services/MailService.cs | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PortBlog.API/Controllers/AuthController.cs b/PortBlog.API/Controllers/AuthController.cs index 4b599f6..704c2b2 100644 --- a/PortBlog.API/Controllers/AuthController.cs +++ b/PortBlog.API/Controllers/AuthController.cs @@ -59,7 +59,7 @@ namespace PortBlog.API.Controllers catch (Exception ex) { logger.LogCritical(ex, "Exception while sending OTP for {ToEmail}.", messageSendDto.ToEmail); - return StatusCode(500, "A problem happened while handling your request."); + return StatusCode(500, ex.Message); } } diff --git a/PortBlog.API/Controllers/CvController.cs b/PortBlog.API/Controllers/CvController.cs index f39e309..3cf88c7 100644 --- a/PortBlog.API/Controllers/CvController.cs +++ b/PortBlog.API/Controllers/CvController.cs @@ -262,8 +262,8 @@ namespace PortBlog.API.Controllers } catch (Exception ex) { - _logger.LogCritical($"Exception while sending message from {message.Name}.", ex); - return StatusCode(500, "A problem happened while handling your request."); + _logger.LogCritical(ex, "Exception while sending message from {Name}.", message.Name); + return StatusCode(500, ex.Message); } } } diff --git a/PortBlog.API/Services/MailService.cs b/PortBlog.API/Services/MailService.cs index 63aca96..82c9fc5 100644 --- a/PortBlog.API/Services/MailService.cs +++ b/PortBlog.API/Services/MailService.cs @@ -67,14 +67,14 @@ namespace PortBlog.API.Services } catch (Exception ex) { - // Log full exception and persist failed message. Do not rethrow to avoid causing a 500 from OTP generation + // Log full exception and persist failed message. logger.LogCritical(ex, "Exception while sending mail from {FromEmail} ({Name}).", messageSendDto.FromEmail, messageSendDto.Name); messageSendDto.SentStatus = (int)MailConstants.MailStatus.Failed; mailRepository.AddMessage(messageEntity); await mailRepository.SaveChangesAsync(); - // swallow the exception so OTP generation continues; caller can inspect delivery status via message logs - return; + // Throw a descriptive exception so callers can return an error message to the client. + throw new InvalidOperationException($"Failed to send email to '{messageSendDto.ToEmail}'. See inner exception for details.", ex); } } }