static void RenderText(TextPart text, WebBrowserEditabil pWebBrowser) { string html; if (text.IsHtml) { html = text.Text; } else if (text.IsFlowed) { var converter = new FlowedToHtml(); string delsp; if (!text.ContentType.Parameters.TryGetValue("delsp", out delsp)) { delsp = "no"; } if (string.Compare(delsp, "yes", StringComparison.OrdinalIgnoreCase) == 0) { converter.DeleteSpace = true; } html = converter.Convert(text.Text); } else { html = new TextToHtml().Convert(text.Text); } pWebBrowser.DocumentText = html; }
public static void RenderMultipartRelated(MultipartRelated related, WebBrowserEditabil pWebBrowser) { var root = related.Root; var multipart = root as Multipart; var text = root as TextPart; if (multipart != null) { for (int i = multipart.Count; i > 0; i--) { var body = multipart[i - 1] as TextPart; if (body == null) { continue; } if (body.ContentType.IsMimeType("text", "html")) { text = body; break; } if (text == null) { text = body; } } } if (text != null) { if (text.ContentType.IsMimeType("text", "html")) { var ctx = new MultipartRelatedImageContext(related); var converter = new HtmlToHtml() { HtmlTagCallback = ctx.HtmlTagCallback }; var html = converter.Convert(text.Text); pWebBrowser.DocumentText = html; } else { RenderText(text, pWebBrowser); } } else { return; } }
public static void Render(IMailFolder folder, UniqueId uid, BodyPart body, WebBrowserEditabil pWebBrowser) { var multipart = body as BodyPartMultipart; if (multipart != null && body.ContentType.IsMimeType("multipart", "related")) { RenderMultipartRelated(folder, uid, multipart, pWebBrowser); return; } var text = body as BodyPartText; if (multipart != null) { if (multipart.ContentType.IsMimeType("multipart", "alternative")) { for (int i = multipart.BodyParts.Count; i > 0; i--) { var multi = multipart.BodyParts[i - 1] as BodyPartMultipart; if (multi != null && multi.ContentType.IsMimeType("multipart", "related")) { if (multi.BodyParts.Count == 0) { continue; } var start = multi.ContentType.Parameters["start"]; var root = multi.BodyParts[0]; if (!string.IsNullOrEmpty(start)) { root = multi.BodyParts.OfType <BodyPartText>().FirstOrDefault(x => x.ContentId == start); } if (root != null && root.ContentType.IsMimeType("text", "html")) { Render(folder, uid, multi, pWebBrowser); return; } continue; } text = multipart.BodyParts[i - 1] as BodyPartText; if (text != null) { RenderText(folder, uid, text, pWebBrowser); return; } } } else if (multipart.BodyParts.Count > 0) { Render(folder, uid, multipart.BodyParts[0], pWebBrowser); } } else if (text != null) { RenderText(folder, uid, text, pWebBrowser); } }
public static async void RenderMultipartRelated(IMailFolder folder, UniqueId uid, BodyPartMultipart bodyPart, WebBrowserEditabil pWebBrowser) { var related = await folder.GetBodyPartAsync(uid, bodyPart) as MultipartRelated; RenderMultipartRelated(related, pWebBrowser); }
private static async void RenderText(IMailFolder folder, UniqueId uid, BodyPartText bodyPart, WebBrowserEditabil pWebBrowser) { var entity = await folder.GetBodyPartAsync(uid, bodyPart); RenderText((TextPart)entity, pWebBrowser); }