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); } }
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); }
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); }
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" } }; }