using System.Configuration; using System.Net.Mail; using System.Reflection; using System.Web.Security; using MileageTraker.Web.Models; using log4net; namespace MileageTraker.Web.Email { /// /// Email Notification /// public class EmailNotificationService { private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private readonly string _emaialFromAddress; private readonly string _resetPasswordSubject; private readonly string _resetPasswordBody; private readonly string _initializePasswordSubject; private readonly string _initializePasswordBody; private readonly SmtpClient _smtpClient; /// /// Initializes a new instance of the class. /// /// The SMTP client. public EmailNotificationService() { _smtpClient = new SmtpClient(); _emaialFromAddress = ConfigurationManager.AppSettings["EmailFromAddress"]; _resetPasswordSubject = ConfigurationManager.AppSettings["ResetPasswordSubject"]; _resetPasswordBody = ConfigurationManager.AppSettings["ResetPasswordBody"]; _initializePasswordSubject = ConfigurationManager.AppSettings["InitializePasswordSubject"]; _initializePasswordBody = ConfigurationManager.AppSettings["InitializetPasswordBody"]; } /// /// Sends the reset password email. /// /// To this user. /// Reset url public void SendResetPassword(User user, string url) { var body = string.Format(_resetPasswordBody, url, user.Username); SendMessage(new MailMessage(_emaialFromAddress, user.Email, _resetPasswordSubject, body)); } public void SendInitializePassword(User user, string url) { var body = string.Format(_initializePasswordBody, url, user.FullName, user.Username); SendMessage(new MailMessage(_emaialFromAddress, user.Email, _initializePasswordSubject, body)); } public void SendServiceReminder(ServiceReminderEmail email) { SendMessage(new MailMessage(_emaialFromAddress, email.Recipient.Email, email.Subject, email.Body)); } private void SendMessage(MailMessage mailMessage) { try { Logger.Debug("Email sending to " + mailMessage.To + ", subject: " + mailMessage.Subject); _smtpClient.Send(mailMessage); } catch (SmtpException ex) { Logger.Error("Failed to send mail", ex); } } } }