예제 #1
0
 /// <summary>
 /// Creates a new <see cref="EmailService"/>.
 /// </summary>
 public EmailService(IEmailViewRender emailViewRenderer, IEmailParser emailParser, IOptions <EmailServiceOptions> options, ILogger <EmailService> logger)
 {
     this.emailViewRenderer = emailViewRenderer;
     this.emailParser       = emailParser;
     this.options           = options.Value;
     this.logger            = logger;
 }
예제 #2
0
        /// <summary>
        /// Creates a new <see cref="EmailViewResult"/>.
        /// </summary>
#if ASPNET5
        public EmailViewResult(Email email, IEmailViewRenderer renderer, IEmailParser parser, IServiceProvider serviceProvider, RequestUrl url)
        {
            Email       = email;
            Renderer    = renderer ?? new EmailViewRenderer(serviceProvider);
            Parser      = parser ?? new EmailParser(Renderer, url);
            _requestUrl = url;
        }
예제 #3
0
        public static IEmailParser CreateEmail(ParserContext context)
        {
            object       obj    = CreateObject(context, typeof(IEmailParser), "CreateEmail");
            IEmailParser parser = (IEmailParser)obj;

            return(parser);
        }
예제 #4
0
 public EmailDataControllerTests()
 {
     _emailCleaner     = Substitute.For <IEmailCleaner>();
     _emailParser      = Substitute.For <IEmailParser>();
     _totalsCalculator = Substitute.For <ITotalsCalculator>();
     _controller       = new EmailDataController(_emailParser, _totalsCalculator, _emailCleaner);
 }
예제 #5
0
        /// <summary>
        /// Creates a new <see cref="EmailViewResult"/>.
        /// </summary>
#if ASPNET5
        public EmailViewResult(Email email, IEmailViewRenderer renderer, IEmailParser parser, IServiceProvider serviceProvider)
        {
            var requestFeature = serviceProvider.GetRequiredService <Microsoft.AspNetCore.Http.Features.IHttpRequestFeature>();

            Email    = email;
            Renderer = renderer ?? new EmailViewRenderer(serviceProvider);
            Parser   = parser ?? new EmailParser(Renderer, requestFeature);
        }
예제 #6
0
 public ImapIdleEmailClient(
     IImapEmailMapper mapper,
     IEmailParser parser,
     IPublisherContract publisher,
     IDispatcher dispatcher)
     : base(mapper, parser, publisher, dispatcher)
 {
 }
예제 #7
0
        /// <summary>
        /// Renders the email view and builds a <see cref="MailMessage"/>. Does not send the email.
        /// </summary>
        /// <param name="email">The email to render.</param>
        /// <returns>A <see cref="MailMessage"/> containing the rendered email.</returns>
        public async Task <MailMessage> CreateMailMessageAsync(Email email)
        {
            var rawEmailString = await emailViewRenderer.RenderAsync(email);

            emailParser = new EmailParser(emailViewRenderer);
            var mailMessage = await emailParser.ParseAsync(rawEmailString, email);

            return(mailMessage);
        }
 public EmailViewResultExecutor(ILoggerFactory loggerFactory,
                                IHttpResponseStreamWriterFactory httpResponseStreamWriterFactory,
                                IEmailViewRender render,
                                IEmailParser parser = null)
 {
     _logger = loggerFactory.CreateLogger <EmailViewResultExecutor>();
     _httpResponseStreamWriterFactory = httpResponseStreamWriterFactory;
     Render = render;
     Parser = parser ?? new EmailParser(Render);
 }
        public ImapIdleEmailClient(
            IImapEmailMapper mapper,
            IEmailParser parser,
            IPublisherContract publisher)
            : base(mapper, parser, publisher)
        {
            this.baseLogString = $"{this.GetType()} [{this.GetHashCode()}] =>{Environment.NewLine}";
            string verboseMessage = $"{baseLogString} entering Ctor.";

            Logger.LogVerbose(verboseMessage);
        }
예제 #10
0
        /// <summary>
        /// Renders the email view and builds a <see cref="MailMessage"/>. Does not send the email.
        /// </summary>
        /// <param name="email">The email to render.</param>
        /// <returns>A <see cref="MailMessage"/> containing the rendered email.</returns>
        public MailMessage CreateMailMessage(Email email)
        {
#if ASPNET5
            var rawEmailString = emailViewRenderer.Render(email, RequestUrl);
            emailParser = new EmailParser(emailViewRenderer, RequestUrl);
#else
            var rawEmailString = emailViewRenderer.Render(email, request: Request);
#endif
            var mailMessage = emailParser.Parse(rawEmailString, email);
            return(mailMessage);
        }
예제 #11
0
        /// <summary>
        /// Renders the email view and builds a <see cref="MailMessage"/>. Does not send the email.
        /// </summary>
        /// <param name="email">The email to render.</param>
        /// <returns>A <see cref="MailMessage"/> containing the rendered email.</returns>
        public async Task <MailMessage> CreateMailMessageAsync(Email email)
        {
            var rawEmailString = await emailViewRenderer.RenderAsync(email);

            emailParser = new EmailParser(emailViewRenderer);
            var mailMessage = await emailParser.ParseAsync(rawEmailString, email);

            if (mailMessage.From == null || mailMessage.From.Address == null)
            {
                mailMessage.From = new MailAddress(this.options.FromAddress);
            }
            return(mailMessage);
        }
        public ImapEmailClient(IImapEmailMapper mapper, IEmailParser parser, IPublisherContract publisher, IDispatcher dispatcher)
        {
            address  = ConfigurationManager.AppSettings["emailAddress"];
            password = ConfigurationManager.AppSettings["emailPassword"];
            server   = ConfigurationManager.AppSettings["emailServer"];
            port     = Int32.Parse(ConfigurationManager.AppSettings["emailPort"]);

            this.mapper     = mapper;
            this.parser     = parser;
            this.publisher  = publisher;
            this.dispatcher = dispatcher;

            client = new ImapClient(server, port, true);
        }
예제 #13
0
        /// <summary>
        /// Creates a new <see cref="EmailService"/>.
        /// </summary>
        public EmailService(IEmailViewRender emailViewRenderer, IEmailParser emailParser, IOptions <EmailServiceOptions> options, ILogger <EmailService> logger)
        {
            this.emailViewRenderer = emailViewRenderer;
            this.emailParser       = emailParser;
            this.options           = options.Value;
            this.logger            = logger;

            logger.LogDebug($"EmailService options:");
            logger.LogDebug($"\tHost: {this.options.Host}");
            logger.LogDebug($"\tPort: {this.options.Port}");
            logger.LogDebug($"\tEnableSSL: {this.options.EnableSSL}");
            logger.LogDebug($"\tFromAddress: {this.options.FromAddress}");
            logger.LogDebug($"\tUserName: {this.options.UserName}");
        }
예제 #14
0
        public void ReadCnmTest()
        {
            string        path    = TestDataSample.GetCNMPath("Y0B6E8H2.CNM");
            ParserContext context = new ParserContext(path);
            IEmailParser  parser  = ParserFactory.CreateEmail(context) as IEmailParser;
            ToxyEmail     email   = parser.Parse();

            Assert.AreEqual(1, email.From.Count);
            Assert.AreEqual(1, email.To.Count);
            Assert.AreEqual("Тюльпаны <*****@*****.**>", email.From[0]);
            Assert.AreEqual("<*****@*****.**>", email.To[0]);

            Assert.AreEqual("Тюльпаны", email.Subject);
            Assert.IsTrue(email.Body.StartsWith("Тел: 960-51-57;Продажа тюльпанов"));
            Assert.IsTrue(email.HtmlBody.StartsWith("<!DOCTYPE HTML"));
        }
        public void Setup()
        {
            _clientController           = Substitute.For <ITcpClientController>();
            _logger                     = Substitute.For <ILogger>();
            _emailParser                = Substitute.For <IEmailParser>();
            _requestCommandsConverter   = Substitute.For <IRequestCommandsConverter>();
            _serverStatusCodesConverter = Substitute.For <IServerStatusCodesConverter>();

            _clientProcessor = new SmtpServerClientProcessor(_clientController, _logger);

            _clientProcessor.EmailParser = _emailParser;
            _clientProcessor.RequestCommandsConverter   = _requestCommandsConverter;
            _clientProcessor.ServerStatusCodesConverter = _serverStatusCodesConverter;

            _clientController.HostName.Returns(_hostName);
        }
예제 #16
0
        public void ReadEmlTest()
        {
            string        path    = TestDataSample.GetEmailPath("test.eml");
            ParserContext context = new ParserContext(path);
            IEmailParser  parser  = ParserFactory.CreateEmail(context);
            ToxyEmail     email   = parser.Parse();

            Assert.IsNotNullOrEmpty(email.From);
            Assert.AreEqual(1, email.To.Count);
            Assert.AreEqual("=?utf-8?B?5ouJ5Yu+572R?= <*****@*****.**>", email.From);
            Assert.AreEqual("*****@*****.**", email.To[0]);

            Assert.IsTrue(email.Subject.StartsWith("=?utf-8?B?5LiK5rW35YiG5LyX5b635bOw5bm/5ZGK?= =?utf-8?B?5Lyg5p"));
            Assert.IsTrue(email.TextBody.StartsWith("------=_Part_4546_1557510524.1418357602217\r\nContent-Type: text"));
            Assert.IsNull(email.HtmlBody);
        }
예제 #17
0
        public void ReadEmlTest()
        {
            string        path    = TestDataSample.GetEmailPath("test.eml");
            ParserContext context = new ParserContext(path);
            IEmailParser  parser  = ParserFactory.CreateEmail(context);
            ToxyEmail     email   = parser.Parse();

            Assert.IsNotNull(email.From);
            Assert.IsNotEmpty(email.From);
            Assert.AreEqual(1, email.To.Count);
            Assert.AreEqual(email.From, "\u62C9\u52FE\u7F51 <*****@*****.**>");
            Assert.AreEqual(email.To[0], "*****@*****.**");

            Assert.AreEqual(email.Subject, "\u4E0A\u6D77\u5206\u4F17\u5FB7\u5CF0\u5E7F\u544A\u4F20\u64AD\u6709\u9650\u516C\u53F8-\u9AD8\u7EA7.NET\u8F6F\u4EF6\u5DE5\u7A0B\u5E08\u62DB\u8058\u53CD\u9988\u901A\u77E5");
            Assert.IsTrue(email.HtmlBody.StartsWith("<html>\r\n"));
            Assert.IsNull(email.TextBody);
        }
        public ImapEmailClient(IImapEmailMapper mapper, IEmailParser parser, IPublisherContract publisher)
        {
            this.baseLogString = $"{this.GetType()} [{this.GetHashCode()}] =>{Environment.NewLine}";
            string verboseMessage = $"{baseLogString} entering Ctor.";

            Logger.LogVerbose(verboseMessage);

            address  = ConfigurationManager.AppSettings["emailAddress"];
            password = ConfigurationManager.AppSettings["emailPassword"];
            server   = ConfigurationManager.AppSettings["emailServer"];
            port     = Int32.Parse(ConfigurationManager.AppSettings["emailPort"]);

            this.mapper    = mapper;
            this.parser    = parser;
            this.publisher = publisher;

            client = new ImapClient(server, port, true);
        }
        public ImapEmailClient(
            IImapEmailMapper mapper,
            IEmailParser parser,
            IPublisher publisher,
            IDispatcher dispatcher)
        {
            _address  = ConfigurationManager.AppSettings["emailAddress"];
            _password = ConfigurationManager.AppSettings["emailPassword"];
            _server   = ConfigurationManager.AppSettings["emailServer"];
            _port     = Int32.Parse(ConfigurationManager.AppSettings["emailPort"]);

            _mapper     = mapper;
            _parser     = parser;
            _publisher  = publisher;
            _dispatcher = dispatcher;

            _client = new ImapClient(_server, _port, true);
        }
        private HttpContext GetHttpContext(IEmailViewRender render, IEmailParser parser = null)
        {
            var options = Options.Create(new MvcViewOptions());

            var viewExecutor = new EmailViewResultExecutor(
                NullLoggerFactory.Instance,
                new TestHttpResponseStreamWriterFactory(),
                render,
                parser);

            var services = new ServiceCollection();

            services.AddSingleton <IActionResultExecutor <EmailViewResult> >(viewExecutor);

            var httpContext  = new DefaultHttpContext();
            var memoryStream = new MemoryStream();

            httpContext.Response.Body   = memoryStream;
            httpContext.RequestServices = services.BuildServiceProvider();
            return(httpContext);
        }
 public SimpleEmailService(IEmailViewRenderer emailViewRenderer)
 {
     _emailViewRenderer = emailViewRenderer;
     _simpleEmailService = AWSClientFactory.CreateAmazonSimpleEmailServiceClient();
     _emailParser = new EmailParser(emailViewRenderer);
 }
 public SimpleEmailService(IEmailViewRenderer emailViewRenderer, IEmailParser emailParser, AmazonSimpleEmailService amazonSimpleEmailService)
 {
     _emailViewRenderer  = emailViewRenderer;
     _simpleEmailService = amazonSimpleEmailService;
     _emailParser        = emailParser;
 }
 public SimpleEmailService(IEmailViewRenderer emailViewRenderer)
 {
     _emailViewRenderer  = emailViewRenderer;
     _simpleEmailService = AWSClientFactory.CreateAmazonSimpleEmailServiceClient();
     _emailParser        = new EmailParser(emailViewRenderer);
 }
예제 #24
0
 /// <summary>
 /// Creates a new <see cref="EmailViewResult"/>.
 /// </summary>
 public EmailViewResult(Email email, IRazorEngineService razorEngineService, IEmailParser parser)
 {
     Email = email;
     this.razorEngineService = razorEngineService;
     Parser = parser ?? new EmailParser(razorEngineService);
 }
예제 #25
0
 internal EmailService(IRazorEngineService razorEngineService, Func <SmtpClient> createSmtpClient = null)
 {
     this.createSmtpClient   = createSmtpClient ?? (() => new SmtpClient());
     this.razorEngineService = razorEngineService;
     this.emailParser        = new EmailParser(this.razorEngineService);
 }
예제 #26
0
 public EmailViewResult(Email email, IEmailViewRenderer renderer, IEmailParser parser)
 {
     Email    = email;
     Renderer = renderer ?? new EmailViewRenderer(ViewEngineCollection);
     Parser   = parser ?? new EmailParser(Renderer);
 }
예제 #27
0
 /// <param name="viewEngines">The view engines to use when creating email views.</param>
 /// <param name="url">The URL of the current request. This is for the UrlHelper used when generating Urls in a view. When null, this is determined from the current HttpContext instead.</param>
 /// <param name="createSmtpClient">A function that creates a <see cref="SmtpClient"/>. If null, a default creation function is used.</param>
 public EmailService(ViewEngineCollection viewEngines, Uri url = null, Func<SmtpClient> createSmtpClient = null)
 {
     emailViewRenderer = new EmailViewRenderer(viewEngines, url);
     emailParser = new EmailParser(emailViewRenderer);
     this.createSmtpClient = createSmtpClient ?? (() => new SmtpClient());
 }
 public SimpleEmailService(IEmailViewRenderer emailViewRenderer, IEmailParser emailParser, AmazonSimpleEmailService amazonSimpleEmailService)
 {
     _emailViewRenderer = emailViewRenderer;
     _simpleEmailService = amazonSimpleEmailService;
     _emailParser = emailParser;
 }
예제 #29
0
 /// <summary>
 /// Creates a new <see cref="EmailService"/>.
 /// </summary>
 public EmailService(IEmailViewRenderer emailViewRenderer, IEmailParser emailParser, Func<SmtpClient> createSmtpClient)
 {
     this.emailViewRenderer = emailViewRenderer;
     this.emailParser = emailParser;
     this.createSmtpClient = createSmtpClient;
 }
예제 #30
0
 /// <summary>
 /// Creates a new <see cref="EmailViewResult"/>.
 /// </summary>
 public EmailViewResult(Email email, IEmailViewRenderer renderer, IEmailParser parser)
 {
     Email = email;
     Renderer = renderer ?? new EmailViewRenderer(ViewEngineCollection);
     Parser = parser ?? new EmailParser(Renderer);
 }
예제 #31
0
 public void SetUp()
 {
     _emailParser = new EmailParser();
 }
예제 #32
0
 /// <summary>
 /// Creates a new <see cref="EmailService"/>.
 /// </summary>
 public EmailService(IEmailViewRenderer emailViewRenderer, IEmailParser emailParser, Func <SmtpClient> createSmtpClient)
 {
     this.emailViewRenderer = emailViewRenderer;
     this.emailParser       = emailParser;
     this.createSmtpClient  = createSmtpClient;
 }
예제 #33
0
 public EmailDataController(IEmailParser emailParser, ITotalsCalculator totalsCalculator, IEmailCleaner emailCleaner)
 {
     _emailParser      = emailParser;
     _totalsCalculator = totalsCalculator;
     _emailCleaner     = emailCleaner;
 }
 public BookingService(IEmailParser emailParser, ICalculator calculator)
 {
     _emailParser = emailParser;
     _calculator  = calculator;
 }
예제 #35
0
 /// <summary>
 /// Creates a new <see cref="EmailService"/>.
 /// </summary>
 public EmailService(IEmailViewRender emailViewRenderer, IEmailParser emailParser = null, Func <SmtpClient> createSmtpClient = null)
 {
     this.emailViewRenderer = emailViewRenderer;
     this.emailParser       = emailParser;
     this.createSmtpClient  = createSmtpClient ?? (() => new SmtpClient());
 }