public async Task <IActionResult> ConfigureSMTP(ConfigurationModel model) { if (!ModelState.IsValid) { return(await Configure()); } var storeId = await _storeContext.GetActiveStoreScopeConfigurationAsync(); var sendinBlueSettings = await _settingService.LoadSettingAsync <SendinBlueSettings>(storeId); if (model.UseSmtp) { //set case invariant for true because tokens are used in uppercase format in SendinBlue's transactional emails _messageTemplatesSettings.CaseInvariantReplacement = true; await _settingService.SaveSettingAsync(_messageTemplatesSettings, settings => settings.CaseInvariantReplacement, clearCache : false); //check whether SMTP enabled on account var(smtpIsEnabled, smtpErrors) = await _sendinBlueEmailManager.SmtpIsEnabledAsync(); if (smtpIsEnabled) { //get email account or create new one var(emailAccountId, emailAccountErrors) = await _sendinBlueEmailManager.GetEmailAccountIdAsync(model.SenderId, model.SmtpKey); sendinBlueSettings.EmailAccountId = emailAccountId; await _settingService.SaveSettingAsync(sendinBlueSettings, settings => settings.EmailAccountId, storeId, false); if (!string.IsNullOrEmpty(emailAccountErrors)) { _notificationService.ErrorNotification($"{SendinBlueDefaults.NotificationMessage} {emailAccountErrors}"); } } else { //need to activate SMTP account _notificationService.WarningNotification(await _localizationService.GetResourceAsync("Plugins.Misc.SendinBlue.ActivateSMTP")); model.UseSmtp = false; } if (!string.IsNullOrEmpty(smtpErrors)) { _notificationService.ErrorNotification($"{SendinBlueDefaults.NotificationMessage} {smtpErrors}"); } } //set whether to use SMTP sendinBlueSettings.UseSmtp = model.UseSmtp; await _settingService.SaveSettingOverridablePerStoreAsync(sendinBlueSettings, settings => settings.UseSmtp, model.UseSmtp_OverrideForStore, storeId, false); //set sender of transactional emails sendinBlueSettings.SenderId = model.SenderId; await _settingService.SaveSettingOverridablePerStoreAsync(sendinBlueSettings, settings => settings.SenderId, model.SenderId_OverrideForStore, storeId, false); //set SMTP key sendinBlueSettings.SmtpKey = model.SmtpKey; await _settingService.SaveSettingAsync(sendinBlueSettings, settings => settings.SmtpKey, clearCache : false); //now clear settings cache await _settingService.ClearCacheAsync(); _notificationService.SuccessNotification(await _localizationService.GetResourceAsync("Admin.Plugins.Saved")); return(await Configure()); }