public string GetMessageHtml(Guid id) { ApiModel.Message message = GetMessage(id); string html = message.MimeMessage?.HtmlBody; if (html == null) { html = "<pre>" + HtmlAgilityPack.HtmlDocument.HtmlEncode(message.MimeMessage?.TextBody ?? "") + "</pre>"; } HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); HtmlNodeCollection imageElements = doc.DocumentNode.SelectNodes("//img[starts-with(@src, 'cid:')]"); if (imageElements != null) { foreach (HtmlNode imageElement in imageElements) { string cid = imageElement.Attributes["src"].Value.Replace("cid:", "", StringComparison.OrdinalIgnoreCase); var part = message.Parts.Flatten(p => p.ChildParts).FirstOrDefault(p => p.ContentId == cid); imageElement.Attributes["src"].Value = $"api/Messages/{id.ToString()}/part/{part?.Id ?? "notfound"}/content"; } } return(doc.DocumentNode.OuterHtml); }
public ApiModel.Message GetMessage(Guid id) { var result = new ApiModel.Message(GetDbMessage(id)); return(result); }
public string GetMessageSource(Guid id) { ApiModel.Message message = GetMessage(id); return(message.MimeMessage.ToString()); }
public string GetMessageSourceRaw(Guid id) { ApiModel.Message message = GetMessage(id); return(System.Text.Encoding.UTF8.GetString(message.Data)); }