public IActionResult ConfigureSMTP(ConfigurationModel model) { if (!ModelState.IsValid) { return(Configure()); } var storeId = _storeContext.ActiveStoreScopeConfiguration; var sendinBlueSettings = _settingService.LoadSetting <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; _settingService.SaveSetting(_messageTemplatesSettings, settings => settings.CaseInvariantReplacement, clearCache: false); //check whether SMTP enabled on account var(smtpIsEnabled, smtpErrors) = _sendinBlueEmailManager.SmtpIsEnabled(); if (smtpIsEnabled) { //get email account or create new one var(emailAccountId, emailAccountErrors) = _sendinBlueEmailManager.GetEmailAccountId(model.SenderId, model.SmtpKey); sendinBlueSettings.EmailAccountId = emailAccountId; _settingService.SaveSetting(sendinBlueSettings, settings => settings.EmailAccountId, storeId, false); if (!string.IsNullOrEmpty(emailAccountErrors)) { _notificationService.ErrorNotification($"{SendinBlueDefaults.NotificationMessage} {emailAccountErrors}"); } } else { //need to activate SMTP account _notificationService.WarningNotification(_localizationService.GetResource("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; _settingService.SaveSettingOverridablePerStore(sendinBlueSettings, settings => settings.UseSmtp, model.UseSmtp_OverrideForStore, storeId, false); //set sender of transactional emails sendinBlueSettings.SenderId = model.SenderId; _settingService.SaveSettingOverridablePerStore(sendinBlueSettings, settings => settings.SenderId, model.SenderId_OverrideForStore, storeId, false); //set SMTP key sendinBlueSettings.SmtpKey = model.SmtpKey; _settingService.SaveSetting(sendinBlueSettings, settings => settings.SmtpKey, clearCache: false); //now clear settings cache _settingService.ClearCache(); _notificationService.SuccessNotification(_localizationService.GetResource("Admin.Plugins.Saved")); return(Configure()); }
public IActionResult ConfigureSMTP(ConfigurationModel model) { if (!ModelState.IsValid) { return(Configure()); } var storeId = _storeContext.ActiveStoreScopeConfiguration; var sendInBlueSettings = _settingService.LoadSetting <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; _settingService.SaveSetting(_messageTemplatesSettings, x => x.CaseInvariantReplacement, clearCache: false); //check whether SMTP enabled on account var(smtpIsEnabled, smtpErrors) = _sendInBlueEmailManager.SmtpIsEnabled(); if (smtpIsEnabled) { //get email account or create new one var(emailAccountId, emailAccountErrors) = _sendInBlueEmailManager.GetEmailAccountId(model.SenderId, model.SmtpKey); sendInBlueSettings.EmailAccountId = emailAccountId; _settingService.SaveSetting(sendInBlueSettings, x => x.EmailAccountId, storeId, false); if (!string.IsNullOrEmpty(emailAccountErrors)) { ErrorNotification(SendinBlueDefaults.NotificationMessage + emailAccountErrors); } //synchronize message templates tokens with transactional attributes /*var tokens = _messageTokenProvider.GetListOfAllowedTokens().ToList(); * var attributesErrors = _sendInBlueEmailManager.PrepareTransactionalAttributes(tokens); * if (!string.IsNullOrEmpty(attributesErrors)) * ErrorNotification(SendinBlueDefaults.NotificationMessage + attributesErrors);*/ } else { //need to activate SMTP account WarningNotification(_localizationService.GetResource("Plugins.Misc.SendinBlue.ActivateSMTP")); model.UseSmtp = false; } if (!string.IsNullOrEmpty(smtpErrors)) { ErrorNotification(SendinBlueDefaults.NotificationMessage + smtpErrors); } } //set whether to use SMTP sendInBlueSettings.UseSmtp = model.UseSmtp; _settingService.SaveSettingOverridablePerStore(sendInBlueSettings, x => x.UseSmtp, model.UseSmtp_OverrideForStore, storeId, false); //set sender of transactional emails sendInBlueSettings.SenderId = model.SenderId; _settingService.SaveSettingOverridablePerStore(sendInBlueSettings, x => x.SenderId, model.SenderId_OverrideForStore, storeId, false); //set SMTP key sendInBlueSettings.SmtpKey = model.SmtpKey; _settingService.SaveSetting(sendInBlueSettings, x => x.SmtpKey, clearCache: false); //now clear settings cache _settingService.ClearCache(); SuccessNotification(_localizationService.GetResource("Admin.Plugins.Saved")); //select "transactional" tab SaveSelectedTabName("tab-transactional"); return(Configure()); }