public bool Send(MailParam p, string recipient, string url = null, string customData = null) { recipient = ConfigurationManager.AppSettings["epsilon:HookMailAddress"] ?? recipient; var message = new MailMessage(); message.From = new MailAddress(p.FromEmail ?? "*****@*****.**", p.From); message.To.Add(recipient); if (!string.IsNullOrEmpty(p.Reply)) message.ReplyToList.Add(p.Reply); if (!string.IsNullOrEmpty(customData)) message.Headers.Add("Mail-CustomData", customData); message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; message.Subject = p.Subject; message.IsBodyHtml = false; message.Body = p.ContentText + Environment.NewLine + _resourcesTemplateService.GetRes("Res.Mailing.StdSignature", p.CultureId == 0 ? 9 : p.CultureId); if (!string.IsNullOrEmpty(url)) { try { var request = (HttpWebRequest)WebRequest.Create(Config.Current.MailingRootUrl.TrimEnd('/') + "/" + url.TrimStart('~', '/')); using (var response = (HttpWebResponse)request.GetResponse()) { var r = response.GetResponseStream(); if (response.StatusCode == HttpStatusCode.OK && r != null) { string bodyHtml = null; using (var reader = new StreamReader(r)) bodyHtml = reader.ReadToEnd(); var mimeType = new ContentType("text/html"); var alternate = AlternateView.CreateAlternateViewFromString(bodyHtml, mimeType); message.AlternateViews.Add(alternate); } } } catch (Exception ex) { throw new Exception("Unable to obtain mail body: " + url, ex); } } var client = new SmtpClient(); try { client.Send(message); } catch (Exception ex) { _exceptionLoggerService.Log(ex); return false; } return true; }
dynamic RecoverPassword(dynamic x) { var email = Request.Query.email; if (!_userRepository.EmailExists(email)) return Response.AsJson(new { Fail = _resourcesTemplateService.GetRes("Res.Auth.RecoverPassword.EmailNotFound") }); var t = MailingService.GetCryption().SerializeObject(new string[] { DateTime.UtcNow.ToString("O"), email }); var link = Config.Current.MailingRootUrl.TrimEnd('/') + "/Auth/AskPassword?token=" + HttpUtility.UrlEncode(t); var p = new MailParam { Subject = _resourcesTemplateService.GetRes("Res.Mail.RecoverPassword.Subject"), ContentText = _resourcesTemplateService.GetRes("Res.Mail.RecoverPassword.ContentText", new { Link = link }) }; if (_mailingService.Send(p, email)) return Response.AsJson(new { Success = _resourcesTemplateService.GetRes("Res.Auth.RecoverPassword.Sent") }); return Response.AsJson(new { Fail = _resourcesTemplateService.GetRes("Res.Auth.RecoverPassword.SendingError") }); }