Пример #1
0
        private void VerifyIncomingSettings(EmailIncomingSettings incomingSettings, bool discussionsEnabled)
        {
            if (string.IsNullOrWhiteSpace(incomingSettings.AccountUsername))
            {
                throw new BadRequestException("Please enter the system email account username.", ErrorCodes.EmptyEmailUsername);
            }

            if (incomingSettings.IsPasswordDirty && string.IsNullOrWhiteSpace(incomingSettings.AccountPassword))
            {
                throw new BadRequestException("Please enter the system email account password.", ErrorCodes.EmptyEmailPassword);
            }

            if (!discussionsEnabled)
            {
                return;
            }

            if (string.IsNullOrWhiteSpace(incomingSettings.ServerAddress))
            {
                throw new BadRequestException("Please enter a mail server.", ErrorCodes.IncomingEmptyMailServer);
            }

            if (incomingSettings.Port < 1 || incomingSettings.Port > 65535)
            {
                throw new BadRequestException("Ensure the port number is between 1 and 65535.", ErrorCodes.IncomingPortOutOfRange);
            }
        }
Пример #2
0
        public async Task TestIncomingEmailConnectionAsync(int userId, EmailIncomingSettings incomingSettings)
        {
            await _privilegesManager.Demand(userId, InstanceAdminPrivileges.ManageInstanceSettings);

            VerifyIncomingSettings(incomingSettings, true);

            var emailClientConfig = await GetEmailClientConfig(incomingSettings);

            _incomingEmailService.TryConnect(emailClientConfig);
        }
Пример #3
0
        private async Task <EmailClientConfig> GetEmailClientConfig(EmailIncomingSettings incomingSettings)
        {
            var emailClientConfig = new EmailClientConfig()
            {
                ServerAddress   = incomingSettings.ServerAddress,
                Port            = incomingSettings.Port,
                ClientType      = incomingSettings.ServerType,
                AccountUsername = incomingSettings.AccountUsername,
                AccountPassword = incomingSettings.AccountPassword,
                EnableSsl       = incomingSettings.EnableSsl
            };

            if (!incomingSettings.IsPasswordDirty)
            {
                var emailSettings = await _instanceSettingsRepository.GetEmailSettings();

                emailClientConfig.AccountPassword = SystemEncryptions.DecryptFromSilverlight(emailSettings.IncomingPassword);
            }

            return(emailClientConfig);
        }
Пример #4
0
 public Task TestConnectionAsync([FromBody] EmailIncomingSettings settings)
 {
     return(_emailSettingsService.TestIncomingEmailConnectionAsync(Session.UserId, settings));
 }
        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"
                }
            };
        }