private EmailDetails GetEmailDetails(string viewName, EmailMetadata metadata, ControllerContext context) { using (var stream = _viewReader.GetViewStream(viewName, metadata, context)) { string subject = ""; string body = ""; using (var reader = new StreamReader(stream)) { bool subjectProcessed = false; string line; while ((line = reader.ReadLine()) != null) { if (!subjectProcessed) { if (string.IsNullOrEmpty(line)) { continue; } subject = line; subjectProcessed = true; continue; } body += line; } } return new EmailDetails { Body = body, Subject = subject }; } }
public MailMessage RenderMessage(string viewName, EmailMetadata metadata, ControllerContext context) { var details = GetEmailDetails(viewName, metadata, context); var result = new MailMessage { From = metadata.From, Subject = details.Subject, Body = details.Body, IsBodyHtml = metadata.IsHtmlEmail }; metadata.To.ForEach(x => result.To.Add(x)); metadata.Cc.ForEach(x => result.CC.Add(x)); metadata.Bcc.ForEach(x => result.Bcc.Add(x)); return result; }