/// <summary>
        /// Get default SignIn <see cref="SettingsMailServer"/>
        /// </summary>
        public static SettingsMailServer GetSettings()
        {
            var name     = "SignInMailSettings";
            var settings = Db.SQL <SettingsMailServer>(
                "SELECT s FROM Simplified.Ring6.SettingsMailServer s WHERE s.Name = ?", name)
                           .FirstOrDefault();

            if (settings == null)
            {
                Db.Transact(() => {
                    settings = new SettingsMailServer
                    {
                        Name      = name,
                        Enabled   = false,
                        Host      = "",
                        Port      = 587,
                        EnableSsl = true,
                        Username  = "",
                        Password  = "",
                        SiteHost  = Dns.GetHostEntry(string.Empty).HostName,
                        SitePort  = StarcounterEnvironment.Default.UserHttpPort
                    };
                });
            }
            return(settings);
        }
示例#2
0
        protected void SendNewPassword(string Name, string Username, string NewPassword, string Email)
        {
            SettingsMailServer settings = MailSettingsHelper.GetSettings();
            var client = new SmtpClient
            {
                Port                  = settings.Port,
                DeliveryMethod        = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials           = new NetworkCredential(settings.Username, settings.Password),
                Host                  = settings.Host,
                EnableSsl             = settings.EnableSsl
            };

            var mail = new MailMessage(settings.Username, Email)
            {
                Subject = "Restore password",
                Body    =
                    $"<h1>Hello {Name}</h1><p>You have requested a new password for your " +
                    $"<b>{Username}</b> account.</p>" +
                    $"<p>Your new password is: <b>{NewPassword}</b>.</p>",

                IsBodyHtml = true
            };

            client.Send(mail);
        }
 private static UriBuilder BuildResetPasswordLink(
     SettingsMailServer mailSettings,
     ResetPassword resetPassword)
 {
     return(new UriBuilder
     {
         Host = mailSettings.SiteHost,
         Port = (int)mailSettings.SitePort,
         Path = "signin/user/resetpassword",
         Query = "token=" + resetPassword.Token
     });
 }
示例#4
0
文件: Utils.cs 项目: anthrax3/SignIn
        /// <summary>
        /// Send Reset password email
        /// </summary>
        public static void SendResetPasswordMail(string toFullName, string toEmail, string link)
        {
            SettingsMailServer settings = MailSettingsHelper.GetSettings();

            try
            {
                if (!settings.Enabled)
                {
                    throw new InvalidOperationException("Mail service not enabled in the configuration.");
                }

                MailAddress fromAddress = new MailAddress(settings.Username, "Starcounter App");
                MailAddress toAddress   = new MailAddress(toEmail);

                const string subject = "Starcounter App, Reset password request";

                string body = string.Format(
                    "Hi {0}<br><br>" +
                    "We received a request to reset your password<br><br>" +
                    "Click <a href='{1}'>here</a> to set a new password<br><br>" +
                    "Thanks<br>",

                    toFullName, link);

                var smtp = new SmtpClient
                {
                    Host                  = settings.Host,
                    Port                  = settings.Port,
                    EnableSsl             = settings.EnableSsl,
                    DeliveryMethod        = SmtpDeliveryMethod.Network,
                    UseDefaultCredentials = false,
                    Credentials           = new NetworkCredential(fromAddress.Address, settings.Password)
                };

                using (var message = new MailMessage(fromAddress, toAddress)
                {
                    Subject = subject,
                    IsBodyHtml = true,
                    Body = body
                })
                {
                    smtp.Send(message);
                }
            }
            catch (Exception e)
            {
                throw e;
                // TODO:
                //LogWriter.WriteLine(string.Format("ERROR: Failed to send registration email event. {0}", e.Message));
            }
        }
示例#5
0
        /// <summary>
        /// Check if the mail server settings are valid
        /// </summary>
        public static bool IsValid(this SettingsMailServer settings)
        {
            if (string.IsNullOrEmpty(settings.Host))
            {
                return(false);
            }

            if (settings.Port > IPEndPoint.MaxPort || (settings.Port < IPEndPoint.MinPort))
            {
                return(false);
            }

            return(true);
        }
示例#6
0
        protected void SendNewPassword(string Name, string Username, string NewPassword, string Email)
        {
            SettingsMailServer settings = MailSettingsHelper.GetSettings();
            MailMessage        mail     = new MailMessage(settings.Username, Email);
            SmtpClient         client   = new SmtpClient();

            client.Port                  = settings.Port;
            client.DeliveryMethod        = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.Credentials           = new NetworkCredential(settings.Username, settings.Password);
            client.Host                  = settings.Host;
            client.EnableSsl             = settings.EnableSsl;

            mail.Subject = "Restore password";
            mail.Body    =
                string.Format(
                    "<h1>Hello {0}</h1><p>You have requested a new password for your <b>{1}</b> account.</p><p>Your new password is: <b>{2}</b>.</p>",
                    Name, Username, NewPassword);
            mail.IsBodyHtml = true;
            client.Send(mail);
        }