diff --git a/src/Core/Constants.cs b/src/Core/Constants.cs
index a480089592..7d88042941 100644
--- a/src/Core/Constants.cs
+++ b/src/Core/Constants.cs
@@ -159,7 +159,6 @@ public static class FeatureFlagKeys
public const string Otp6Digits = "pm-18612-otp-6-digits";
public const string PM24579_PreventSsoOnExistingNonCompliantUsers = "pm-24579-prevent-sso-on-existing-non-compliant-users";
public const string DisableAlternateLoginMethods = "pm-22110-disable-alternate-login-methods";
- public const string MJMLBasedEmailTemplates = "mjml-based-email-templates";
public const string MjmlWelcomeEmailTemplates = "pm-21741-mjml-welcome-email";
public const string OrganizationConfirmationEmail = "pm-28402-update-confirmed-to-org-email-template";
public const string MarketingInitiatedPremiumFlow = "pm-26140-marketing-initiated-premium-flow";
diff --git a/src/Core/Platform/Mail/HandlebarsMailService.cs b/src/Core/Platform/Mail/HandlebarsMailService.cs
index d57ca400fd..0d3b7bb31c 100644
--- a/src/Core/Platform/Mail/HandlebarsMailService.cs
+++ b/src/Core/Platform/Mail/HandlebarsMailService.cs
@@ -208,26 +208,6 @@ public class HandlebarsMailService : IMailService
await _mailDeliveryService.SendEmailAsync(message);
}
- public async Task SendSendEmailOtpEmailAsync(string email, string token, string subject)
- {
- var message = CreateDefaultMessage(subject, email);
- var requestDateTime = DateTime.UtcNow;
- var model = new DefaultEmailOtpViewModel
- {
- Token = token,
- TheDate = requestDateTime.ToLongDateString(),
- TheTime = requestDateTime.ToShortTimeString(),
- TimeZone = _utcTimeZoneDisplay,
- WebVaultUrl = _globalSettings.BaseServiceUri.VaultWithHash,
- SiteName = _globalSettings.SiteName,
- };
- await AddMessageContentAsync(message, "Auth.SendAccessEmailOtpEmail", model);
- message.MetaData.Add("SendGridBypassListManagement", true);
- // TODO - PM-25380 change to string constant
- message.Category = "SendEmailOtp";
- await _mailDeliveryService.SendEmailAsync(message);
- }
-
public async Task SendSendEmailOtpEmailv2Async(string email, string token, string subject)
{
var message = CreateDefaultMessage(subject, email);
diff --git a/src/Core/Platform/Mail/IMailService.cs b/src/Core/Platform/Mail/IMailService.cs
index e21e1a010f..ae80befa5b 100644
--- a/src/Core/Platform/Mail/IMailService.cs
+++ b/src/Core/Platform/Mail/IMailService.cs
@@ -51,11 +51,9 @@ public interface IMailService
Task SendChangeEmailAlreadyExistsEmailAsync(string fromEmail, string toEmail);
Task SendChangeEmailEmailAsync(string newEmailAddress, string token);
Task SendTwoFactorEmailAsync(string email, string accountEmail, string token, string deviceIp, string deviceType, TwoFactorEmailPurpose purpose);
- Task SendSendEmailOtpEmailAsync(string email, string token, string subject);
///
/// has a default expiry of 5 minutes so we set the expiry to that value int he view model.
/// Sends OTP code token to the specified email address.
- /// will replace when MJML templates are fully accepted.
///
/// Email address to send the OTP to
/// Otp code token
diff --git a/src/Core/Platform/Mail/NoopMailService.cs b/src/Core/Platform/Mail/NoopMailService.cs
index 7de48e4619..d9250313bb 100644
--- a/src/Core/Platform/Mail/NoopMailService.cs
+++ b/src/Core/Platform/Mail/NoopMailService.cs
@@ -94,11 +94,6 @@ public class NoopMailService : IMailService
return Task.FromResult(0);
}
- public Task SendSendEmailOtpEmailAsync(string email, string token, string subject)
- {
- return Task.FromResult(0);
- }
-
public Task SendSendEmailOtpEmailv2Async(string email, string token, string subject)
{
return Task.FromResult(0);
diff --git a/src/Identity/IdentityServer/RequestValidators/SendAccess/SendEmailOtpRequestValidator.cs b/src/Identity/IdentityServer/RequestValidators/SendAccess/SendEmailOtpRequestValidator.cs
index 34a7a6f6e7..6c488ab8ab 100644
--- a/src/Identity/IdentityServer/RequestValidators/SendAccess/SendEmailOtpRequestValidator.cs
+++ b/src/Identity/IdentityServer/RequestValidators/SendAccess/SendEmailOtpRequestValidator.cs
@@ -62,20 +62,12 @@ public class SendEmailOtpRequestValidator(
{
return BuildErrorResult(SendAccessConstants.EmailOtpValidatorResults.OtpGenerationFailed);
}
- if (featureService.IsEnabled(FeatureFlagKeys.MJMLBasedEmailTemplates))
- {
- await mailService.SendSendEmailOtpEmailv2Async(
- email,
- token,
- string.Format(SendAccessConstants.OtpEmail.Subject, token));
- }
- else
- {
- await mailService.SendSendEmailOtpEmailAsync(
- email,
- token,
- string.Format(SendAccessConstants.OtpEmail.Subject, token));
- }
+
+ await mailService.SendSendEmailOtpEmailv2Async(
+ email,
+ token,
+ string.Format(SendAccessConstants.OtpEmail.Subject, token));
+
return BuildErrorResult(SendAccessConstants.EmailOtpValidatorResults.EmailOtpSent);
}
diff --git a/test/Core.Test/Services/HandlebarsMailServiceTests.cs b/test/Core.Test/Services/HandlebarsMailServiceTests.cs
index b98c4580f5..4ff0868c7e 100644
--- a/test/Core.Test/Services/HandlebarsMailServiceTests.cs
+++ b/test/Core.Test/Services/HandlebarsMailServiceTests.cs
@@ -254,21 +254,6 @@ public class HandlebarsMailServiceTests
}
}
- [Fact]
- public async Task SendSendEmailOtpEmailAsync_SendsEmail()
- {
- // Arrange
- var email = "test@example.com";
- var token = "aToken";
- var subject = string.Format("Your Bitwarden Send verification code is {0}", token);
-
- // Act
- await _sut.SendSendEmailOtpEmailAsync(email, token, subject);
-
- // Assert
- await _mailDeliveryService.Received(1).SendEmailAsync(Arg.Any());
- }
-
[Fact]
public async Task SendIndividualUserWelcomeEmailAsync_SendsCorrectEmail()
{
diff --git a/test/Identity.Test/IdentityServer/SendAccess/SendEmailOtpRequestValidatorTests.cs b/test/Identity.Test/IdentityServer/SendAccess/SendEmailOtpRequestValidatorTests.cs
index 7fdfacf428..158558bb03 100644
--- a/test/Identity.Test/IdentityServer/SendAccess/SendEmailOtpRequestValidatorTests.cs
+++ b/test/Identity.Test/IdentityServer/SendAccess/SendEmailOtpRequestValidatorTests.cs
@@ -44,7 +44,7 @@ public class SendEmailOtpRequestValidatorTests
await sutProvider.GetDependency()
.DidNotReceive()
- .SendSendEmailOtpEmailAsync(Arg.Any(), Arg.Any(), Arg.Any());
+ .SendSendEmailOtpEmailv2Async(Arg.Any(), Arg.Any(), Arg.Any());
}
[Theory, BitAutoData]
@@ -77,7 +77,7 @@ public class SendEmailOtpRequestValidatorTests
await sutProvider.GetDependency()
.DidNotReceive()
- .SendSendEmailOtpEmailAsync(Arg.Any(), Arg.Any(), Arg.Any());
+ .SendSendEmailOtpEmailv2Async(Arg.Any(), Arg.Any(), Arg.Any());
}
[Theory, BitAutoData]
@@ -126,7 +126,7 @@ public class SendEmailOtpRequestValidatorTests
// Verify email sending
await sutProvider.GetDependency()
.Received(1)
- .SendSendEmailOtpEmailAsync(email, generatedToken, Arg.Any());
+ .SendSendEmailOtpEmailv2Async(email, generatedToken, Arg.Any());
}
[Theory, BitAutoData]
@@ -160,7 +160,7 @@ public class SendEmailOtpRequestValidatorTests
// Verify no email was sent
await sutProvider.GetDependency()
.DidNotReceive()
- .SendSendEmailOtpEmailAsync(Arg.Any(), Arg.Any(), Arg.Any());
+ .SendSendEmailOtpEmailv2Async(Arg.Any(), Arg.Any(), Arg.Any());
}
[Theory, BitAutoData]
@@ -212,7 +212,7 @@ public class SendEmailOtpRequestValidatorTests
// Verify no email was sent (validation only)
await sutProvider.GetDependency()
.DidNotReceive()
- .SendSendEmailOtpEmailAsync(Arg.Any(), Arg.Any(), Arg.Any());
+ .SendSendEmailOtpEmailv2Async(Arg.Any(), Arg.Any(), Arg.Any());
}
[Theory, BitAutoData]