Пример #1
0
        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;
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        private static async void RenderText(IMailFolder folder, UniqueId uid, BodyPartText bodyPart, WebBrowserEditabil pWebBrowser)
        {
            var entity = await folder.GetBodyPartAsync(uid, bodyPart);

            RenderText((TextPart)entity, pWebBrowser);
        }