// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            IAppSetting        app  = new AppSetting();
            ISMTPConfiguration sMTP = new SMTPConfiguration();

            Configuration.Bind("Appsetting", app);
            Configuration.Bind("SMTPConfiguration", sMTP);
            services.AddControllersWithViews()
            .SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
            .ConfigureApiBehaviorOptions(o =>
            {
                o.SuppressConsumesConstraintForFormFileParameters = true;
            })
            .AddJsonOptions(s =>
            {
                s.JsonSerializerOptions.PropertyNamingPolicy        = null;
                s.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
                s.JsonSerializerOptions.WriteIndented = true;
            });
            services.AddSingleton(sMTP);
            services.AddAllCors()
            .AddUtility(app)
            .AddDependency()
            .AddApiVersioning();
        }
        public override void Initialize(bool isSubscription, DestinationListItem fdli, DestinationBase fd)
        {
            this.doValidation = true;

            this.panelSMTPSettings.Visible = false;

            PrefPriority[] priorityChoices = PrefPriority.GetList(false);
            this.comboBoxMinimumPriority.Items.Add(Properties.Resources.AddProwl_AnyPriority);
            for (int i = 0; i < priorityChoices.Length; i++)
            {
                this.comboBoxMinimumPriority.Items.Add(priorityChoices[i]);
            }
            this.comboBoxMinimumPriority.SelectedIndex = 0;

            // set text box values
            this.textBoxDescription.Text               = String.Empty;
            this.textBoxDescription.Enabled            = true;
            this.textBoxUsername.Text                  = String.Empty;
            this.textBoxUsername.Enabled               = true;
            this.comboBoxMinimumPriority.SelectedIndex = 0;
            this.comboBoxMinimumPriority.Enabled       = true;

            EmailForwardDestination efd = fd as EmailForwardDestination;

            if (efd != null)
            {
                this.textBoxDescription.Text = efd.Description;
                this.textBoxUsername.Text    = efd.To;
                if (efd.MinimumPriority != null && efd.MinimumPriority.HasValue)
                {
                    this.comboBoxMinimumPriority.SelectedItem = PrefPriority.GetByValue(efd.MinimumPriority.Value);
                }
                this.checkBoxOnlyWhenIdle.Checked = efd.OnlyWhenIdle;
                this.smtp = efd.SMTPConfiguration;
            }
            this.labelSMTPValues.Text = String.Format("{0}", this.smtp.Host);

            ValidateInputs();

            this.textBoxDescription.Focus();
        }
        private MailMessage GetMailDetail(MessageTemplateView emailMessage, SMTPConfiguration sMTP)
        {
            MailMessage mail = new MailMessage();

            mail.From = new MailAddress(emailMessage.From);

            foreach (string address in emailMessage.To)
            {
                if (!string.IsNullOrEmpty(address) && !string.IsNullOrWhiteSpace(address))
                {
                    mail.To.Add(new MailAddress(address));
                }
            }

            if (emailMessage.CC != null)
            {
                foreach (string address in emailMessage.CC)
                {
                    if (!string.IsNullOrEmpty(address) && !string.IsNullOrWhiteSpace(address))
                    {
                        mail.CC.Add(new MailAddress(address));
                    }
                }
            }

            if (sMTP.DefaultCC != null)
            {
                var defaultCC = sMTP.DefaultCC.Split(';');
                if (defaultCC == null || !defaultCC.Any())
                {
                    defaultCC = sMTP.DefaultCC.Split(',');
                }
                foreach (string address in defaultCC)
                {
                    if (!string.IsNullOrEmpty(address) && !string.IsNullOrWhiteSpace(address))
                    {
                        mail.CC.Add(new MailAddress(address));
                    }
                }
            }

            if (emailMessage.BCC != null)
            {
                foreach (string address in emailMessage.BCC)
                {
                    if (!string.IsNullOrEmpty(address) && !string.IsNullOrWhiteSpace(address))
                    {
                        mail.Bcc.Add(new MailAddress(address));
                    }
                }
            }

            if (sMTP.DefaultBCC != null)
            {
                var defaultCC = sMTP.DefaultBCC.Split(';');
                if (defaultCC == null || !defaultCC.Any())
                {
                    defaultCC = sMTP.DefaultBCC.Split(',');
                }
                foreach (string address in defaultCC)
                {
                    if (!string.IsNullOrEmpty(address) && !string.IsNullOrWhiteSpace(address))
                    {
                        mail.Bcc.Add(new MailAddress(address));
                    }
                }
            }

            mail.Subject    = emailMessage.Subject;
            mail.Body       = emailMessage.MessageBody;
            mail.IsBodyHtml = true;

            if (!mail.IsBodyHtml)
            {
                mail.Body = mail.Body.Replace("\r\n", "\r");
                mail.Body = mail.Body.Replace("\r", "\r\n");
            }
            return(mail);
        }
        public override void Initialize(bool isSubscription, DestinationListItem fdli, DestinationBase fd)
        {
            this.doValidation = true;

            this.panelSMTPSettings.Visible = false;

            PrefPriority[] priorityChoices = PrefPriority.GetList(false);
            this.comboBoxMinimumPriority.Items.Add(Properties.Resources.AddProwl_AnyPriority);
            for (int i = 0; i < priorityChoices.Length; i++)
            {
                this.comboBoxMinimumPriority.Items.Add(priorityChoices[i]);
            }
            this.comboBoxMinimumPriority.SelectedIndex = 0;

            // set text box values
            this.textBoxDescription.Text = String.Empty;
            this.textBoxDescription.Enabled = true;
            this.textBoxUsername.Text = String.Empty;
            this.textBoxUsername.Enabled = true;
            this.comboBoxMinimumPriority.SelectedIndex = 0;
            this.comboBoxMinimumPriority.Enabled = true;

            EmailForwardDestination efd = fd as EmailForwardDestination;
            if (efd != null)
            {
                this.textBoxDescription.Text = efd.Description;
                this.textBoxUsername.Text = efd.To;
                if (efd.MinimumPriority != null && efd.MinimumPriority.HasValue)
                    this.comboBoxMinimumPriority.SelectedItem = PrefPriority.GetByValue(efd.MinimumPriority.Value);
                this.checkBoxOnlyWhenIdle.Checked = efd.OnlyWhenIdle;
                this.smtp = efd.SMTPConfiguration;
            }
            this.labelSMTPValues.Text = String.Format("{0}", this.smtp.Host);

            ValidateInputs();

            this.textBoxDescription.Focus();
        }