/// <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); }
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 }); }
/// <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)); } }
/// <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); }
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); }