From 15f2d73b42d6c9543a728c8006da2d4cebdb06f1 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Fri, 8 Mar 2024 18:05:01 +0300 Subject: [PATCH] Validate email address for `IEmailSender.QueueAsync` method to prevent background job to retry if the email address is invalid. --- .../Volo/Abp/Emailing/EmailSenderBase.cs | 15 +++++++++++++++ .../Volo/Abp/Validation/ValidationHelper.cs | 0 2 files changed, 15 insertions(+) rename framework/src/{Volo.Abp.Validation => Volo.Abp.Validation.Abstractions}/Volo/Abp/Validation/ValidationHelper.cs (100%) diff --git a/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/EmailSenderBase.cs b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/EmailSenderBase.cs index 55d4b50a58..986ad1c38a 100644 --- a/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/EmailSenderBase.cs +++ b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/EmailSenderBase.cs @@ -7,6 +7,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.BackgroundJobs; +using Volo.Abp.Validation; namespace Volo.Abp.Emailing; @@ -84,6 +85,8 @@ public abstract class EmailSenderBase : IEmailSender public virtual async Task QueueAsync(string to, string subject, string body, bool isBodyHtml = true, AdditionalEmailSendingArgs? additionalEmailSendingArgs = null) { + ValidateEmailAddress(to); + if (!BackgroundJobManager.IsAvailable()) { await SendAsync(to, subject, body, isBodyHtml, additionalEmailSendingArgs); @@ -104,6 +107,8 @@ public abstract class EmailSenderBase : IEmailSender public virtual async Task QueueAsync(string from, string to, string subject, string body, bool isBodyHtml = true, AdditionalEmailSendingArgs? additionalEmailSendingArgs = null) { + ValidateEmailAddress(to); + if (!BackgroundJobManager.IsAvailable()) { await SendAsync(from, to, subject, body, isBodyHtml, additionalEmailSendingArgs); @@ -161,4 +166,14 @@ public abstract class EmailSenderBase : IEmailSender mail.BodyEncoding = Encoding.UTF8; } } + + private static void ValidateEmailAddress(string emailAddress) + { + if(ValidationHelper.IsValidEmailAddress(emailAddress)) + { + return; + } + + throw new ArgumentException($"Email address '{emailAddress}' is not valid!"); + } } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationHelper.cs b/framework/src/Volo.Abp.Validation.Abstractions/Volo/Abp/Validation/ValidationHelper.cs similarity index 100% rename from framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationHelper.cs rename to framework/src/Volo.Abp.Validation.Abstractions/Volo/Abp/Validation/ValidationHelper.cs