public HtmlSmtpTarget()
        {
            PreTriggerMessages      = 16;
            EventBacklog            = 8192;
            MaximumEventsPerMessage = 1024;
            HolddownPeriod          = new TimeSpan(0, 15, 0);
            _triggerLevel           = LogLevel.Warn;
            Subject = new SimpleLayout(
                "[${machinename}] ${processname} ${event-properties:item=TriggerEvents} of ${event-properties:item=TotalEvents} " +
                "[${event-properties:item=GroupAlertEvents},${event-properties:item=GroupWarnEvents},${event-properties:item=GroupInfoEvents} ,${event-properties:item=GroupDevEvents}]" +
                " (${event-properties:item=LostEvents} lost)" +
                "${var:name=htmlsmtp.subject.suffix}");


            From      = $"NLog <htmlsmtp@{Dns.GetHostName()}>";
            Transport = new SimpleLayout(SmtpClientFactory.MakeDefaultTransport());

            Message   = new SimpleLayout("${message}");
            Timestamp = new SimpleLayout("${longdate}");
            Context   = new SimpleLayout("${mdlc:item=id}");
            Exception = new SimpleLayout("${exception:format=Message,ToString}");
            // Level = new SimpleLayout(@"<img style=""image-{$Level}"" alt=""${Level}"" title=""${Level}"" />");
            Level = new SimpleLayout(@"${level}");

            _mailTemplate = MakeTemplate();
            Handlebars.RegisterHelper("layout", LayoutHelper);
            _cancelTokenSource = new CancellationTokenSource();
            _worker            = new Thread(Worker)
            {
                Name         = "HTML SMTP Logger",
                IsBackground = true,
            };
        }
        public FrameworkRegistry(IBootstrapperConfiguration settings)
        {
            Scan(scanner =>
            {
                scanner.AssemblyContainingType(typeof(FluentValidation.AbstractValidator <>));
                scanner.AssemblyContainingType(typeof(BaseResponse));
                scanner.AssemblyContainingType(typeof(IRequestHandler <,>));

                scanner.AddAllTypesOf(typeof(FluentValidation.IValidator <>));
                scanner.AddAllTypesOf(typeof(IRequestHandler <,>));
                scanner.AddAllTypesOf(typeof(IRootRequestHandler <,>));
                scanner.AddAllTypesOf(typeof(IEventHandler <>));

                scanner.WithDefaultConventions();
            });

            For <IBootstrapperConfiguration>().Use(settings);

            // Messaging
            For <IRequestDispatcher>().Use(ctx => new RequestDispatcher(type => ctx.GetInstance(type)));
            For <IEventDispatcher>().Use(ctx => new EventDispatcher(type => ctx.GetAllInstances(type)));
            For(typeof(IRootRequestHandler <,>)).Use(typeof(RootRequestHandler <,>)); // Register default handler.
            // Decorate request handlers behaviour.
            var types = For(typeof(IRootRequestHandler <,>));

            types.DecorateAllWith(typeof(AppServices.Decorators.ValidatorHandler <,>));
            // End Messaging

            For <IFileClient>().Use(ctx => new LocalFileClient(settings.Storage_RootPath, settings.Storage_BaseUrl));
            For <ILogger>().Use(ctx => new ConsoleLogger());
            For <SmtpClient>().Use(() => SmtpClientFactory.CreateSmtpClient(settings));
        }
        public void TestSimpleSmtps()
        {
            var match = SmtpClientFactory.MatchConfig("smtps://smtp.domain.com");

            Assert.IsTrue(match.Success);
            Assert.AreEqual("smtps", match.GetSingletonCapture("scheme"));
        }
        public void TestSimpleFilePath()
        {
            var match = SmtpClientFactory.MatchConfig("file:/my/mydrop/queue");

            Assert.IsTrue(match.Success);
            Assert.AreEqual("file", match.GetSingletonCapture("scheme"));
        }
        public void TestSimpleFilePath()
        {
            var match = SmtpClientFactory.MatchConfig("file:/my/mydrop/queue");

            match.Success.ShouldBeTrue();
            "file".ShouldEqual(match.GetSingletonCapture("scheme"));
        }
        public void TestSimpleSmtps()
        {
            var match = SmtpClientFactory.MatchConfig("smtps://smtp.domain.com");

            match.Success.ShouldBeTrue();
            "smtps".ShouldEqual(match.GetSingletonCapture("scheme"));
        }
        public void TestEmpty()
        {
            var match = SmtpClientFactory.MatchConfig("");

            match.ShouldNotBeNull();
            match.Success.ShouldBeTrue();
        }
        public void MakeDefaultTransportString()
        {
            var configStr = SmtpClientFactory.MakeDefaultTransport();

            configStr.ShouldNotBeNull();
            configStr.ShouldContain("smtp", StringComparison.InvariantCultureIgnoreCase);
        }
Exemplo n.º 9
0
        private void SendEmail(string subject, string htmlMessageBody)
        {
            // Create and configure the smtp client
            var smtpClient = SmtpClientFactory.ParseConfiguration(Transport);

            var mailMessage = new MailMessage
            {
                From    = new MailAddress(From),
                Subject = subject,
            };

            mailMessage.To.Add(To);
            mailMessage.BodyEncoding = Encoding.ASCII;
            var htmlView = AlternateView.CreateAlternateViewFromString(
                htmlMessageBody,
                new ContentType("text/html;charset=utf-8"));

            // Add icons as attachments to the email.
            LinkedResources.AddAttachmentIffGifFound(htmlView, "fatal", "/image/FatalIcon.gif");
            LinkedResources.AddAttachmentIffGifFound(htmlView, "error", "/image/ErrorIcon.gif");
            LinkedResources.AddAttachmentIffGifFound(htmlView, "warn", "/image/WarnIcon.gif");
            LinkedResources.AddAttachmentIffGifFound(htmlView, "notice", "/image/NoticeIcon.gif");
            LinkedResources.AddAttachmentIffGifFound(htmlView, "info", "/image/InfoIcon.gif");
            LinkedResources.AddAttachmentIffGifFound(htmlView, "debug", "/image/DebugIcon.gif");
            LinkedResources.AddAttachmentIffGifFound(htmlView, "trace", "/image/TraceIcon.gif");

            mailMessage.AlternateViews.Add(htmlView);
            if (!string.IsNullOrEmpty(ReplyTo))
            {
                mailMessage.ReplyTo = new MailAddress(ReplyTo);
            }


            smtpClient.Send(mailMessage);
        }
    protected override void InitializeClientService()
    {
        var smtpClientFactory  = new SmtpClientFactory();
        var mailMessageFactory = new MailMessageFactory();

        _clientService = new EmailClientService(smtpClientFactory, mailMessageFactory)
    }
Exemplo n.º 11
0
 /// <summary>
 /// Добавить FluentEmail.
 /// </summary>
 /// <param name="serviceCollection">Коллекция сервисов.</param>
 /// <param name="settings">Настройки SMTP клиента.</param>
 public static void AddFluentEmail(this IServiceCollection serviceCollection, SmtpClientSettings settings)
 {
     serviceCollection
     .AddScoped <ISender>(serviceProvider => new SmtpSender(SmtpClientFactory.Create(settings)))
     .AddScoped <IEmailNotifier, EmailNotifier>()
     .AddFluentEmail(settings.DefaultEmail)
     .AddRazorRenderer();
 }
        public void TestSimpleFile()
        {
            var match = SmtpClientFactory.MatchConfig("file:c:\\maildrop\\");

            match.Success.ShouldBeTrue();
            "file".ShouldEqual(match.GetSingletonCapture("scheme"));
            @"c:\maildrop\".ShouldEqual(match.GetSingletonCapture("path"));
        }
Exemplo n.º 13
0
        /// <summary>
        ///     Конструктор.
        /// </summary>
        /// <param name="options"> Параметры. </param>
        public MailService(MailingOptions options)
        {
            Options = options ?? throw new ArgumentNullException(nameof(options),
                                                                 "Не переданы параметры отправки сообщений");

            MailTransport = SmtpClientFactory.Create(options);
            _disposed     = false;
        }
        public void TestSimpleFile()
        {
            var match = SmtpClientFactory.MatchConfig("file:c:\\maildrop\\");

            Assert.IsTrue(match.Success);
            Assert.AreEqual("file", match.GetSingletonCapture("scheme"));
            Assert.AreEqual(@"c:\maildrop\", match.GetSingletonCapture("path"));
        }
        public void TestSmtp1()
        {
            var match = SmtpClientFactory.MatchConfig("smtp://*****:*****@smtp.domain.com:smtp?authentication=ntlm");

            Assert.IsTrue(match.Success);
            Assert.AreEqual("smtp", match.GetSingletonCapture("scheme"));
            Assert.AreEqual("smtp.domain.com", match.GetSingletonCapture("host"));
            Assert.AreEqual("smtp", match.GetSingletonCapture("service"));
            Assert.AreEqual("uuuu", match.GetSingletonCapture("username"));
            Assert.AreEqual("pppp", match.GetSingletonCapture("password"));
        }
        public void TestSmtpWithQueryParameters()
        {
            var match = SmtpClientFactory.MatchConfig("smtp://*****:*****@smtp.domain.com:smtp?authentication=ntlm");

            match.Success.ShouldBeTrue();
            "smtp".ShouldEqual(match.GetSingletonCapture("scheme"));
            "smtp.domain.com".ShouldEqual(match.GetSingletonCapture("host"));
            "smtp".ShouldEqual(match.GetSingletonCapture("service"));
            "uuuu".ShouldEqual(match.GetSingletonCapture("username"));
            "pppp".ShouldEqual(match.GetSingletonCapture("password"));
        }
Exemplo n.º 17
0
        public virtual void Process(WorkflowPipelineArgs args)
        {
            ScribanMailActionItem actionItem = args.ProcessorItem.InnerItem;
            var mailTo = actionItem.To;

            if (string.IsNullOrWhiteSpace(mailTo))
            {
                Log.Error(GetType().FullName + " cannot be invoked with an empty 'To' field.", this);
                return;
            }

            var mailFrom = actionItem.From;

            if (string.IsNullOrWhiteSpace(mailFrom))
            {
                Log.Error(GetType().FullName + " cannot be invoked with an empty 'From' field.", this);
                return;
            }

            var mailSubject = actionItem.Subject;
            var mailBody    = actionItem.Message;

            var model = CreateModel(args);

            try
            {
                mailTo      = ProcessScribanTemplate(mailTo, model);
                mailFrom    = ProcessScribanTemplate(mailFrom, model);
                mailSubject = ProcessScribanTemplate(mailSubject, model);
                mailBody    = ProcessScribanTemplate(mailBody, model);
            }
            catch (Exception ex)
            {
                Log.Error("An error occurred whilst rendering a Scriban template in " + GetType().FullName, ex, this);
                return;
            }

            try
            {
                var message = new MailMessage(mailFrom, mailTo, mailSubject, mailBody);
                message.IsBodyHtml = true;

                using (var smtpClient = SmtpClientFactory.Invoke())
                {
                    smtpClient.Send(message);
                }
            }
            catch (Exception ex)
            {
                Log.Error("Exception while sending workflow email", ex, this);
                args.AbortPipeline();
            }
        }
Exemplo n.º 18
0
        public Task SendAsync(IdentityMessage identityMessage)
        {
            Message messageObject = new Message
            {
                Body    = identityMessage.Body,
                To      = identityMessage.Destination,
                Subject = identityMessage.Subject
            };
            var message = EmailSender.GetMailMessage(messageObject);
            var client  = SmtpClientFactory.Create();

            return(Task.Run(() => client.Send(message)));
        }
Exemplo n.º 19
0
 private static void EmailKuldes(EmailConf ec, string cimzett, string tema, string uzenet)
 {
     using (var smtpClient = SmtpClientFactory.GetClient(SmtpClientFactory.ClientType.Gmail,
                                                         new NetworkCredential(ec.Azonosito, ec.Jelszo), ec.Ssl, "", 0))
     {
         var mailMessage = new MailMessage
         {
             From       = new MailAddress(ec.KuldoEmailcime, ec.KuldoNeve),
             IsBodyHtml = true,
             Body       = uzenet,
             Subject    = tema
         };
         mailMessage.To.Add(cimzett);
         smtpClient.Send(mailMessage);
     }
 }
Exemplo n.º 20
0
        public override void ActivateOptions()
        {
            LogLog.Debug(typeof(HtmlSmtpAppender), "HTML SMTP Appender options activated");
            base.ActivateOptions();
            _queue = (EventBacklog > 0)
                ? new BlockingCollection <LoggingEvent>(EventBacklog)
                : new BlockingCollection <LoggingEvent>();

            if (Layout == null)
            {
                var layout = MakeLayout();
                layout.ActivateOptions();
                Layout = layout;
            }
            if (MaximumEventsPerMessage <= 1)
            {
                MaximumEventsPerMessage = 1024;
            }
            if (HolddownPeriod.Ticks <= 0)
            {
                HolddownPeriod = new TimeSpan(0, 15, 0);
            }
            if (Trigger == null)
            {
                Trigger = new LevelEvaluator(Level.Warn);
            }
            if (Subject == null)
            {
                Subject = "Log4net";
            }
            if (string.IsNullOrEmpty(From))
            {
                From = string.Format("log4net <htmlsmtpappender@{0}>", System.Net.Dns.GetHostName());
            }
            if (string.IsNullOrEmpty(Transport))
            {
                Transport = SmtpClientFactory.MakeDefaultTransport();
            }
            if (Fix == FixFlags.None)
            {
                Fix = FixFlags.Partial | FixFlags.Ndc;
            }

            _worker.Start();
        }
        public void TestEmpty()
        {
            var match = SmtpClientFactory.MatchConfig("");

            Assert.IsTrue(match.Success);
        }
Exemplo n.º 22
0
        public void SmtpClient(string transportConfig)
        {
            var client = SmtpClientFactory.ParseConfiguration(transportConfig);

            client.ShouldNotBeNull();
        }