private void UpdateEmailSettings(EmailSettings emailSettings, EmailSettingsDto emailSettingsDto)
        {
            // Notification settings
            emailSettings.EnableNotifications   = emailSettingsDto.EnableReviewNotifications;
            emailSettings.EnableEmailReplies    = emailSettingsDto.EnableDiscussions;
            emailSettings.EnableEmailDiscussion = emailSettingsDto.EnableEmailNotifications;

            // Incoming settings
            emailSettings.IncomingServerType = (int)emailSettingsDto.Incoming.ServerType;
            emailSettings.IncomingHostName   = emailSettingsDto.Incoming.ServerAddress;
            emailSettings.IncomingPort       = emailSettingsDto.Incoming.Port;
            emailSettings.IncomingEnableSSL  = emailSettingsDto.Incoming.EnableSsl;
            emailSettings.IncomingUserName   = emailSettingsDto.Incoming.AccountUsername;

            if (emailSettingsDto.Incoming.IsPasswordDirty)
            {
                emailSettings.IncomingPassword = SystemEncryptions.EncryptForSilverLight(emailSettingsDto.Incoming.AccountPassword);
            }

            // Outgoing settings
            emailSettings.HostName           = emailSettingsDto.Outgoing.ServerAddress;
            emailSettings.Port               = emailSettingsDto.Outgoing.Port;
            emailSettings.EnableSSL          = emailSettingsDto.Outgoing.EnableSsl;
            emailSettings.SenderEmailAddress = emailSettingsDto.Outgoing.AccountEmailAddress;
            emailSettings.Authenticated      = emailSettingsDto.Outgoing.AuthenticatedSmtp;
            emailSettings.UserName           = emailSettingsDto.Outgoing.AccountUsername;

            if (emailSettingsDto.Outgoing.IsPasswordDirty)
            {
                emailSettings.Password = SystemEncryptions.EncryptForSilverLight(emailSettingsDto.Outgoing.AccountPassword);
            }
        }
示例#2
0
    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),
            SmtpPassword              = await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.Password),
            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.SmtpPassword = await SettingManager.GetOrNullForTenantAsync(EmailSettingNames.Smtp.Password, CurrentTenant.GetId(), false);

            settingsDto.SmtpDomain = await SettingManager.GetOrNullForTenantAsync(EmailSettingNames.Smtp.Domain, CurrentTenant.GetId(), false);
        }

        return(settingsDto);
    }
        public async Task UpdateEmailSettingsAsync(int userId, EmailSettingsDto emailSettingsDto)
        {
            if (emailSettingsDto.Incoming == null)
            {
                throw new BadRequestException("Incoming cannot be null.", ErrorCodes.InvalidParameter);
            }

            if (emailSettingsDto.Outgoing == null)
            {
                throw new BadRequestException("Outgoing cannot be null.", ErrorCodes.InvalidParameter);
            }

            await _privilegesManager.Demand(userId, InstanceAdminPrivileges.ManageInstanceSettings);

            if (!emailSettingsDto.EnableEmailNotifications && emailSettingsDto.EnableDiscussions)
            {
                throw new BadRequestException("Cannot enable discussions without enabling email notifications.", ErrorCodes.CannotEnableDiscussions);
            }

            VerifyIncomingSettings(emailSettingsDto.Incoming, emailSettingsDto.EnableDiscussions);

            VerifyOutgoingSettings(emailSettingsDto.Outgoing);

            var emailSettings = await _instanceSettingsRepository.GetEmailSettings();

            UpdateEmailSettings(emailSettings, emailSettingsDto);

            await _instanceSettingsRepository.UpdateEmailSettingsAsync(emailSettings);
        }
        public async Task UpdateEmailSettings(EmailSettingsDto input)
        {
            //强制设定这两个选项,避免在ui上让用户迷惑,除非明确知道这两个选项的作用
            input.SmtpUseDefaultCredentials = false;
            input.SmtpDomain = string.Empty;

            if (AbpSession.TenantId.HasValue)
            {
                var tenantId = AbpSession.TenantId.Value;
                await ChangeForTenant(tenantId, EmailSettingNames.DefaultFromAddress, input.DefaultFromAddress);
                await ChangeForTenant(tenantId, EmailSettingNames.DefaultFromDisplayName, input.DefaultFromDisplayName);
                await ChangeForTenant(tenantId, EmailSettingNames.Smtp.Domain, input.SmtpDomain);
                await ChangeForTenant(tenantId, EmailSettingNames.Smtp.EnableSsl, input.SmtpEnableSsl.ToString());
                await ChangeForTenant(tenantId, EmailSettingNames.Smtp.Host, input.SmtpHost);
                await ChangeForTenant(tenantId, EmailSettingNames.Smtp.Password, input.SmtpPassword);
                await ChangeForTenant(tenantId, EmailSettingNames.Smtp.Port, input.SmtpPort.ToString());
                await ChangeForTenant(tenantId, EmailSettingNames.Smtp.UseDefaultCredentials, input.SmtpUseDefaultCredentials.ToString());
                await ChangeForTenant(tenantId, EmailSettingNames.Smtp.UserName, input.SmtpUserName);
            }
            else
            {
                await ChangeForApplication(EmailSettingNames.DefaultFromAddress, input.DefaultFromAddress);
                await ChangeForApplication(EmailSettingNames.DefaultFromDisplayName, input.DefaultFromDisplayName);
                await ChangeForApplication(EmailSettingNames.Smtp.Domain, input.SmtpDomain);
                await ChangeForApplication(EmailSettingNames.Smtp.EnableSsl, input.SmtpEnableSsl.ToString());
                await ChangeForApplication(EmailSettingNames.Smtp.Host, input.SmtpHost);
                await ChangeForApplication(EmailSettingNames.Smtp.Password, input.SmtpPassword);
                await ChangeForApplication(EmailSettingNames.Smtp.Port, input.SmtpPort.ToString());
                await ChangeForApplication(EmailSettingNames.Smtp.UseDefaultCredentials, input.SmtpUseDefaultCredentials.ToString());
                await ChangeForApplication(EmailSettingNames.Smtp.UserName, input.SmtpUserName);
            }
        }
示例#5
0
        public async Task UpdateAsync(EmailSettingsDto EmailSettings, string providerName = null, string providerKey = null)
        {
            var domain = new EmailSettings();

            ObjectMapper.Map(EmailSettings, domain);

            await Factory.SetAsync(domain, providerName, providerKey);
        }
 protected override async Task OnInitializedAsync()
 {
     try
     {
         EmailSettings = await EmailSettingsAppService.GetAsync();
     }
     catch (Exception ex)
     {
         await HandleErrorAsync(ex);
     }
 }
示例#7
0
 private async Task SendEmailNotification(EmailSettingsDto emailSettings)
 {
     if (emailSettings != null && emailSettings.IsAvailable())
     {
         var from = new MailAddress(emailSettings.Address, "Dwg Base Notification");
         var to   = new MailAddress(emailSettings.Address);
         using (var m = new MailMessage(from, to))
         {
             m.Subject    = "Dwg Base Notification";
             m.Body       = "New file was uploaded by user";
             m.IsBodyHtml = false;
             using (var smtp = new SmtpClient(emailSettings.Host, emailSettings.Port))
             {
                 smtp.Credentials = new NetworkCredential(emailSettings.UserName, emailSettings.Password);
                 smtp.EnableSsl   = false;
                 await smtp.SendMailAsync(m).ConfigureAwait(true);
             }
         }
     }
 }
        public async Task UpdateEmailSettings(EmailSettingsDto settings)
        {
            await SettingManager.ChangeSettingForApplicationAsync(EmailSettingNames.DefaultFromAddress, settings.DefaultFromAddress);

            await SettingManager.ChangeSettingForApplicationAsync(EmailSettingNames.DefaultFromDisplayName, settings.DefaultFromDisplayName);

            await SettingManager.ChangeSettingForApplicationAsync(EmailSettingNames.Smtp.Host, settings.SmtpHost);

            await SettingManager.ChangeSettingForApplicationAsync(EmailSettingNames.Smtp.Port, settings.SmtpPort.ToString(CultureInfo.InvariantCulture));

            await SettingManager.ChangeSettingForApplicationAsync(EmailSettingNames.Smtp.UserName, settings.SmtpUserName);

            await SettingManager.ChangeSettingForApplicationAsync(EmailSettingNames.Smtp.Password, settings.SmtpPassword);

            await SettingManager.ChangeSettingForApplicationAsync(EmailSettingNames.Smtp.Domain, settings.SmtpDomain);

            await SettingManager.ChangeSettingForApplicationAsync(EmailSettingNames.Smtp.EnableSsl, settings.SmtpEnableSsl.ToString().ToLowerInvariant());

            await SettingManager.ChangeSettingForApplicationAsync(EmailSettingNames.Smtp.UseDefaultCredentials, settings.SmtpUseDefaultCredentials.ToString().ToLowerInvariant());
        }
示例#9
0
 public Task UpdateEmailSettingsAsync([FromBody] EmailSettingsDto emailSettingsDto)
 {
     return(_emailSettingsService.UpdateEmailSettingsAsync(Session.UserId, emailSettingsDto));
 }
 protected override async Task OnInitializedAsync()
 {
     EmailSettings = await EmailSettingsAppService.GetAsync();
 }
示例#11
0
        public async Task <EmailSettingsDto> GetAsync(EmailSettingsGetDto EmailSettingsGet = null, bool fallback = true)
        {
            EmailSettingsDto result = new EmailSettingsDto();

            return(ObjectMapper.Map(await Factory.GetAsync(EmailSettingsGet.ProviderName, EmailSettingsGet.ProviderKey), result));
        }
 public Task UpdateAsync(EmailSettingsDto EmailSettings, string providerName = null, string providerKey = null)
 {
     return(EmailSettingsAppService.UpdateAsync(EmailSettings, providerName, providerKey));
 }
        public void Initialize()
        {
            Mock <IPrivilegesRepository>  privilegesRepositoryMock  = new Mock <IPrivilegesRepository>();
            Mock <IUserRepository>        userRepositoryMock        = new Mock <IUserRepository>();
            Mock <IWebsiteAddressService> websiteAddressServiceMock = new Mock <IWebsiteAddressService>();

            _instanceSettingsRepositoryMock = new Mock <IInstanceSettingsRepository>();
            _emailHelperMock          = new Mock <IEmailHelper>();
            _incomingEmailServiceMock = new Mock <IIncomingEmailService>();

            _emailSettingsService = new EmailSettingsService(new PrivilegesManager(privilegesRepositoryMock.Object),
                                                             userRepositoryMock.Object,
                                                             _emailHelperMock.Object,
                                                             websiteAddressServiceMock.Object,
                                                             _instanceSettingsRepositoryMock.Object,
                                                             _incomingEmailServiceMock.Object);

            privilegesRepositoryMock.Setup(repo => repo.GetInstanceAdminPrivilegesAsync(UserId)).ReturnsAsync(() => _adminPrivilege);

            userRepositoryMock.Setup(repo => repo.GetUserAsync(UserId)).ReturnsAsync(() => _user);

            websiteAddressServiceMock.Setup(service => service.GetWebsiteAddress()).Returns(WebsiteAddress);

            _instanceSettingsRepositoryMock.Setup(repo => repo.GetEmailSettings()).ReturnsAsync(() => _emailSettings);

            // Setup Default Values
            _outgoingSettings = new EmailOutgoingSettings()
            {
                AuthenticatedSmtp   = true,
                AccountPassword     = "******",
                AccountUsername     = "******",
                AccountEmailAddress = "*****@*****.**",
                EnableSsl           = true,
                Port            = 2,
                ServerAddress   = "smtp.blueprintsys.com",
                IsPasswordDirty = true
            };

            _incomingSettings = new EmailIncomingSettings()
            {
                AccountUsername = "******",
                AccountPassword = "******",
                EnableSsl       = true,
                Port            = 2,
                ServerAddress   = "mail.test.com",
                ServerType      = EmailClientType.Imap,
                IsPasswordDirty = true
            };

            _adminPrivilege = InstanceAdminPrivileges.ManageInstanceSettings;

            _user = new User()
            {
                Email = "*****@*****.**"
            };

            _emailSettings = new EmailSettings()
            {
                Password              = EncryptedPassword,
                IncomingPassword      = EncryptedPassword,
                Authenticated         = true,
                EnableEmailDiscussion = false,
                EnableEmailReplies    = true,
                EnableNotifications   = true,
                EnableSSL             = true,
                SenderEmailAddress    = "*****@*****.**",
                HostName              = "smtp.test.com",
                Port               = 1234,
                UserName           = "******",
                IncomingEnableSSL  = false,
                IncomingHostName   = "pop3.test.com",
                IncomingPort       = 2345,
                IncomingServerType = 0,
                IncomingUserName   = "******"
            };

            _emailSettingsDto = new EmailSettingsDto()
            {
                EnableDiscussions         = false,
                EnableEmailNotifications  = true,
                EnableReviewNotifications = false,
                Incoming = new EmailIncomingSettings()
                {
                    AccountPassword = "******",
                    AccountUsername = "******",
                    EnableSsl       = true,
                    IsPasswordDirty = true,
                    Port            = 8765,
                    ServerAddress   = "imap.test.com",
                    ServerType      = EmailClientType.Pop3
                },
                Outgoing = new EmailOutgoingSettings()
                {
                    AccountEmailAddress = "*****@*****.**",
                    AccountPassword     = "******",
                    AccountUsername     = "******",
                    AuthenticatedSmtp   = true,
                    EnableSsl           = true,
                    IsPasswordDirty     = true,
                    Port          = 9876,
                    ServerAddress = "mail.test.com"
                }
            };
        }