private static Email ForwardEmail(Email email) { var result = email; email.FromAddress.Email = email.FromAddress.Name = GetPhoneNumber(email.PlainTextBody, Prefix, Postfix); return result; }
public bool CreateEmail(Email email) { if (email.EmailReference.IsNullOrEmpty()) return false; _emailContext.Emails.Add(email); return _emailContext.SaveChanges() > 0; }
private static Email ForwardEmail(Email email) { var result = email; var subject = $"Forwarded Message from {email.Subject}"; email.FromAddress.Name = email.FromAddress.Email = email.Subject; result.Subject = subject; return result; }
public bool SendEmail(IMailboxSettings mailboxSettings, Email email) { bool success; lock (_key) { success = _mailAdaptor.SendEmail(mailboxSettings, email); } return success; }
public void Subject_Does_Not_Contain_Mobile_Number_Rule_Is_Not_Applied() { //arrange const string subject = "The quick brown fox"; var email = new Email { Subject = subject }; //act var result = _rule.ApplyRule(email); //assert result.RuleApplied.Should().BeFalse(); }
public void Subject_Is_Not_Valid_Email_Address_Rule_Is_Not_Applied() { //arrange const string subject = "The quick brown fox"; var email = new Email { Subject = subject }; _validatorMock.Setup(x => x.IsValidEmail(subject)).Returns(false); //act var result = _rule.ApplyRule(email); //assert result.RuleApplied.Should().BeFalse(); }
public void All_Rules_Are_Tried_If_No_Rules_Apply() { //arrange var email = new Email(); _mockRule1.Setup(x => x.ApplyRule(email)).Returns(new RuleResult { RuleApplied = false }); _mockRule2.Setup(x => x.ApplyRule(email)).Returns(new RuleResult { RuleApplied = false }); _mockRule3.Setup(x => x.ApplyRule(email)).Returns(new RuleResult { RuleApplied = false }); //act _forwardService.ProcessEmail(email); //assert _mockRule1.Verify(x => x.ApplyRule(email), Times.Once()); _mockRule2.Verify(x => x.ApplyRule(email), Times.Once()); _mockRule3.Verify(x => x.ApplyRule(email), Times.Once()); }
private Email ForwardEmailFromAutoMessaging(Email email, string tenantEmailAddress) { var result = email; var subject = email.Subject.Split(']')[1]; var fromAddress = result.FromAddress; result.Subject = subject; result.EmailAddresses.Clear(); result.EmailAddresses.Add(fromAddress); result.EmailAddresses.Add(new EmailAddress { Email = tenantEmailAddress, Type = EmailAddressType.To }); return result; }
public void Rules_Are_Tried_Until_Rule_Applies_And_Rest_Are_Ignored() { //arrange var email = new Email(); _mockRule1.Setup(x => x.ApplyRule(email)).Returns(new RuleResult { RuleApplied = false }); _mockRule2.Setup(x => x.ApplyRule(email)).Returns(new RuleResult { RuleApplied = true }); _mockRule3.Setup(x => x.ApplyRule(email)).Returns(new RuleResult { RuleApplied = false }); //act _forwardService.ProcessEmail(email); //assert _mockRule1.Verify(x => x.ApplyRule(email), Times.Once()); _mockRule2.Verify(x => x.ApplyRule(email), Times.Once()); _mockRule3.Verify(x => x.ApplyRule(email), Times.Never()); }
public ForwardResult ProcessEmail(Email email) { foreach ( var result in _forwardingRuleFactory.GetRules() .Select(rule => rule.ApplyRule(email)) .Where(result => result.RuleApplied)) { return new ForwardResult { RuleApplied = result.RuleName, EmailResult = result.Email, }; } return new ForwardResult {EmailResult = email}; }
public void CreateReference_Sets_NoteReference() { //arrange const string reference = "ABCDE12345"; var mockReferenceGenerator = new Mock<IReferenceGenerator>(); var email = new Email(); mockReferenceGenerator.Setup(x => x.CreateReference(It.IsAny<int>())).Returns(reference); //act email.CreateReference(mockReferenceGenerator.Object); //assert email.EmailReference.Should().NotBeNullOrWhiteSpace(); email.EmailReference.Should().Be(reference); mockReferenceGenerator.Verify(x => x.CreateReference(It.IsAny<int>()), Times.Once); }
public RuleResult ApplyRule(Email email) { if (IsValidEmailAddress(email.Subject)) { return new RuleResult { RuleName = RuleName, RuleApplied = true, Email = ForwardEmail(email), }; } return new RuleResult { RuleName = RuleName, RuleApplied = false, Email = email, }; }
public RuleResult ApplyRule(Email email) { if (IsPhoneNumberInBody(email.PlainTextBody)) { return new RuleResult { RuleName = RuleName, RuleApplied = true, Email = ForwardEmail(email), }; } return new RuleResult { RuleName = RuleName, RuleApplied = false, Email = email }; }
public RuleResult ApplyRule(Email email) { if (IsPhoneNumberInSubject(email.Subject)) { return new RuleResult { RuleName = RuleName, RuleApplied = true, Email = ForwardEmail(email), }; } return new RuleResult { RuleName = RuleName, RuleApplied = false, Email = email }; }
public RuleResult ApplyRule(Email email) { var emailAddress = GetEmailAddressFromSubject(email.Subject); if (!string.IsNullOrEmpty(emailAddress)) { return new RuleResult { RuleName = RuleName, RuleApplied = true, Email = ForwardEmailFromAutoMessaging(email, emailAddress) }; } return new RuleResult { RuleName = RuleName, RuleApplied = false, Email = email }; }
public void Subject_Contains_Mobile_Number_Rule_Is_Applied() { //arrange const string subject = "Dynmark MMS Alert Service. To 447717989072, from 447873128112, on 2014-07-28 16:20 (Monday, 28 July at 16:20)- M"; var email = new Email { Subject = subject, EmailAddresses = new List<EmailAddress> { new EmailAddress {Name = "Test", Email = "*****@*****.**", Type = EmailAddressType.From} } }; //act var result = _rule.ApplyRule(email); //assert result.RuleApplied.Should().BeTrue(); }
public void Subject_Contains_Mobile_Number_Rule_Is_Applied() { //arrange const string body = "Message sent in by 07532 451297 to 447717989072 on Thursday, 21st March at 19:09:32. Message content follows: You've been sent a picture message by 447532451297 open it at http://www.vodafone.co.uk/getmyphoto your password is rfb51zsy"; var email = new Email { PlainTextBody = body, EmailAddresses = new List<EmailAddress> { new EmailAddress {Name = "Test", Email = "*****@*****.**", Type = EmailAddressType.From} } }; //act var result = _rule.ApplyRule(email); //assert result.RuleApplied.Should().BeTrue(); }
public static IMail MapToIMail(Email message) { var builder = new MailBuilder(); ProcessEmailAddresses(builder, message.EmailAddresses); builder.Subject = message.Subject; builder.Text = message.PlainTextBody; builder.PriorityHigh(); if (!string.IsNullOrEmpty(message.HtmlBody)) builder.Html = message.HtmlBody; foreach (var ea in message.Attachments) { var attachment = builder.AddAttachment(ea.ByteArray); attachment.FileName = ea.AttachmentName; attachment.ContentType = ContentType.Parse(ea.MimeType); } return builder.Create(); }
public void Subject_Is_Valid_Email_Address_Rule_Is_Applied() { //arrange const string subject = "*****@*****.**"; var email = new Email { Subject = subject, EmailAddresses = new List<EmailAddress> { new EmailAddress {Name = "Test", Email = "*****@*****.**", Type = EmailAddressType.From} } }; _validatorMock.Setup(x => x.IsValidEmail(subject)).Returns(true); //act var result = _rule.ApplyRule(email); //assert result.RuleApplied.Should().BeTrue(); }
public bool SendEmail(IMailboxSettings mailboxSettings, Email email) { using (var client = new Smtp()) { try { client.ConnectSSL(mailboxSettings.ServerAddress, mailboxSettings.ServerPort); client.LoginOAUTH2(email.FromAddress.Email, _oAuth2Authenticator.GetOAuth2AccessToken(email.FromAddress.Email)); return client.SendMessage(EmailMapper.MapToIMail(email)).Status == SendMessageStatus.Success; } catch (Exception ex) { return false; } } }
private ForwardResult ApplyProcessingRules(IMailboxSettings mailboxSettings, Email email) { return mailboxSettings.ApplyForwardingRules ? _forwardService.ProcessEmail(email) : new ForwardResult {EmailResult = email}; }
public string Send(Email email) { var config = _mailboxConfiguration.Mailboxes.FirstOrDefault(x => x.Outbound); if (config.IsNull()) return string.Empty; _emailRepository.CreateEmail(email.CreateReference(_referenceGenerator).SetDirection(Direction.Outbound).SetAccountName(config.AccountName)); if (!_emailServiceSettings.SendEnabled) return email.EmailReference; var result = _emailProvider.SendEmail(config, email); _emailRepository.UpdateStatus(email.EmailReference, result ? Status.Success : Status.Error); return result ? email.EmailReference : string.Empty; }
public static Email MapEmailToCoreEmail(string accountName, long emailId, IMail email) { var message = new Email { AccountName = accountName, EmailUid = emailId, EmailAddresses = ProcessEmailAddresses(email), Subject = email.Subject, HtmlBody = email.GetBodyAsHtml(), PlainTextBody = email.GetBodyAsText(), Date = email.Date?.ToUniversalTime() ?? DateTime.UtcNow, Direction = Direction.Inbound, Status = Status.Unknown, }; message.Attachments.AddRange(ExtractAttachments(email.NonVisuals)); message.Attachments.AddRange(ExtractAttachments(email.Visuals)); return message; }