1 changed files with 89 additions and 0 deletions
@ -0,0 +1,89 @@ |
|||||
|
using Microsoft.AspNetCore.Authorization; |
||||
|
using Volo.Abp.Emailing; |
||||
|
using SendTestEmailInput = Volo.Abp.SettingManagement.SendTestEmailInput; |
||||
|
using SettingManagementPermissions = Volo.Abp.SettingManagement.SettingManagementPermissions; |
||||
|
|
||||
|
namespace LY.MicroService.Applications.Single.Messages; |
||||
|
|
||||
|
[Authorize(SettingManagementPermissions.Emailing)] |
||||
|
public class PlatformEmailSettingsAppService : SettingManagementAppServiceBase, IEmailSettingsAppService |
||||
|
{ |
||||
|
protected ISettingManager SettingManager { get; } |
||||
|
|
||||
|
protected IEmailSender EmailSender { get; } |
||||
|
|
||||
|
public PlatformEmailSettingsAppService(ISettingManager settingManager, IEmailSender emailSender) |
||||
|
{ |
||||
|
SettingManager = settingManager; |
||||
|
EmailSender = emailSender; |
||||
|
} |
||||
|
|
||||
|
public virtual async Task<EmailSettingsDto> GetAsync() |
||||
|
{ |
||||
|
await CheckFeatureAsync(); |
||||
|
|
||||
|
var settingsDto = new EmailSettingsDto |
||||
|
{ |
||||
|
SmtpHost = await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.Host), |
||||
|
SmtpPort = Convert.ToInt32(await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.Port)), |
||||
|
SmtpUserName = await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.UserName), |
||||
|
SmtpDomain = await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.Domain), |
||||
|
SmtpEnableSsl = Convert.ToBoolean(await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.EnableSsl)), |
||||
|
SmtpUseDefaultCredentials = Convert.ToBoolean(await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.UseDefaultCredentials)), |
||||
|
DefaultFromAddress = await SettingProvider.GetOrNullAsync(EmailSettingNames.DefaultFromAddress), |
||||
|
DefaultFromDisplayName = await SettingProvider.GetOrNullAsync(EmailSettingNames.DefaultFromDisplayName), |
||||
|
}; |
||||
|
|
||||
|
if (CurrentTenant.IsAvailable) |
||||
|
{ |
||||
|
settingsDto.SmtpHost = await SettingManager.GetOrNullForTenantAsync(EmailSettingNames.Smtp.Host, CurrentTenant.GetId(), false); |
||||
|
settingsDto.SmtpUserName = await SettingManager.GetOrNullForTenantAsync(EmailSettingNames.Smtp.UserName, CurrentTenant.GetId(), false); |
||||
|
settingsDto.SmtpDomain = await SettingManager.GetOrNullForTenantAsync(EmailSettingNames.Smtp.Domain, CurrentTenant.GetId(), false); |
||||
|
} |
||||
|
|
||||
|
return settingsDto; |
||||
|
} |
||||
|
|
||||
|
public virtual async Task UpdateAsync(UpdateEmailSettingsDto input) |
||||
|
{ |
||||
|
await CheckFeatureAsync(); |
||||
|
|
||||
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.Host, input.SmtpHost); |
||||
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.Port, input.SmtpPort.ToString()); |
||||
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.UserName, input.SmtpUserName); |
||||
|
if (!input.SmtpPassword.IsNullOrWhiteSpace()) |
||||
|
{ |
||||
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.Password, input.SmtpPassword); |
||||
|
} |
||||
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.Domain, input.SmtpDomain); |
||||
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.EnableSsl, input.SmtpEnableSsl.ToString()); |
||||
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.UseDefaultCredentials, input.SmtpUseDefaultCredentials.ToString().ToLowerInvariant()); |
||||
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.DefaultFromAddress, input.DefaultFromAddress); |
||||
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.DefaultFromDisplayName, input.DefaultFromDisplayName); |
||||
|
} |
||||
|
|
||||
|
[Authorize(SettingManagementPermissions.EmailingTest)] |
||||
|
public virtual async Task SendTestEmailAsync(SendTestEmailInput input) |
||||
|
{ |
||||
|
await CheckFeatureAsync(); |
||||
|
|
||||
|
try |
||||
|
{ |
||||
|
await EmailSender.SendAsync(input.SenderEmailAddress, input.TargetEmailAddress, input.Subject, input.Body); |
||||
|
} |
||||
|
catch (Exception e) |
||||
|
{ |
||||
|
Logger.LogError("Error sending test email: " + e); |
||||
|
throw new UserFriendlyException(L["MailSendingFailed"]); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
protected virtual async Task CheckFeatureAsync() |
||||
|
{ |
||||
|
await FeatureChecker.CheckEnabledAsync(SettingManagementFeatures.Enable); |
||||
|
if (CurrentTenant.IsAvailable) |
||||
|
{ |
||||
|
await FeatureChecker.CheckEnabledAsync(SettingManagementFeatures.AllowChangingEmailSettings); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue