{"id":12,"date":"2026-02-19T14:12:58","date_gmt":"2026-02-19T11:12:58","guid":{"rendered":"http:\/\/esraturan.com.tr\/index.php\/eee\/"},"modified":"2026-02-23T09:55:53","modified_gmt":"2026-02-23T06:55:53","slug":"xtrareport_rapor_ciktisi_body_html_ekleme","status":"publish","type":"page","link":"https:\/\/www.esraturan.com.tr\/index.php\/xtrareport_rapor_ciktisi_body_html_ekleme\/","title":{"rendered":"XtraReport Rapor \u00e7\u0131kt\u0131s\u0131n\u0131 html olarak body k\u0131sm\u0131na ekleme"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u0130lk olarak MhtParsel ad\u0131nda bir  class olu\u015fturuyoruz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class MhtParser\n{\npublic class Part\n{\npublic string MediaType { get; set; }\npublic string ContentID { get; set; }\npublic byte&#91;] Content { get; set; }\n}      \n\n\n  string&#91;] parts;\n\n        public IEnumerable&lt;Part&gt; Parts\n        {\n            get\n            {\n                for (int i = 3; i &lt; parts.Length - 1; i++)\n                {\n                    yield return new Part()\n                    {\n                        MediaType = Regex.Match(parts&#91;i], \"Content-Type:\\\\s*(.*)\\r\").Groups&#91;1].Value,\n                        ContentID = Regex.Match(parts&#91;i], \"Content-ID:\\\\s*&lt;(.*?)&gt;\").Groups&#91;1].Value,\n                        Content = Base64Decode(parts&#91;i].Split(new string&#91;] { \"\\r\\n\\r\\n\" }, StringSplitOptions.None)&#91;1])\n                    };\n                }\n            }\n        }\n        public MhtParser(string mht)\n        {\n            string boundary = GetBoundary(mht);\n            parts = mht.Split(new string&#91;] { boundary }, StringSplitOptions.None);\n        }\n        public string GetBody()\n        {\n            return Encoding.UTF8.GetString(Base64Decode(parts&#91;2].Split(new string&#91;] { \"\\r\\n\\r\\n\" }, StringSplitOptions.None)&#91;1]));\n        }\n        string GetBoundary(string s)\n        {\n            Match m = Regex.Match(s, \"boundary=\\\"(.*?)\\\";\");\n            if (m.Success)\n                return m.Groups&#91;1].Value;\n            return null;\n        }\n        byte&#91;] Base64Decode(string s)\n        {\n            byte&#91;] bodyBytes = Encoding.Default.GetBytes(s);\n            return new FromBase64Transform().TransformFinalBlock(bodyBytes, 0, bodyBytes.Length);\n        }\n\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Daha sonra Xtrareportumuzun data source doldurduktan sonra raporumuzun layoutunu y\u00fckl\u00fcyoruz.Daha sonra Mime html \u00e7evirdikten sonra daha \u00f6nce olu\u015fturdu\u011fumuz klas\u0131m\u0131z\u0131 \u00e7a\u011f\u0131r\u0131yoruz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>     \n       XtraReport Rpt = new XtraReport();\n  Rpt.DataSource = GetRaporBilgi(sqlTip, sqlQuery, Parametreler);\n ReportPrintTool PrintTool = new ReportPrintTool(Rpt);\n                                ((XtraReport)PrintTool.Report).LoadLayout(RaporDosyasi);\n  ReportDesignTool ReportDesingTool = new ReportDesignTool(Rpt);\n  Rpt.CreateDocument();\nMemoryStream mhtStream = new MemoryStream();\n                            Rpt.ExportToMht(mhtStream);\n\n                            MhtParser mhtParser = new MhtParser(Encoding.Default.GetString(mhtStream.ToArray()));\n\n                            string body = mhtParser.GetBody();\n                            body = Regex.Replace(body, \"&lt;script.*?&lt;\/script&gt;\", \"\", RegexOptions.Singleline);\n\n                            AlternateView htmlView = AlternateView.CreateAlternateViewFromString(body, null, \"text\/html\");\n                            htmlView.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;\n                            foreach (var part in mhtParser.Parts)\n                            {\n                                if (body.Contains(\"cid:\" + part.ContentID))\n                                {\n                                    LinkedResource res = new LinkedResource(new MemoryStream(part.Content), part.MediaType);\n                                    res.ContentId = part.ContentID;\n                                    res.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;\n                                    htmlView.LinkedResources.Add(res);\n                                }\n                            }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">AlternateView htmlView de\u011ferini mail g\u00f6nderme servisine g\u00f6nderiyoruz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>MailMessage mail = new MailMessage();<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>mail.AlternateViews.Add(htmlView )<\/strong>; Bu \u015fekilde g\u00f6nderilmesi gerekir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mail ekledi\u011fimiz \u00e7\u0131kt\u0131 \u00f6rne\u011fidir.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1014\" src=\"https:\/\/www.esraturan.com.tr\/wp-content\/uploads\/2026\/02\/image-1-1024x1014.png\" alt=\"\" class=\"wp-image-113\" srcset=\"https:\/\/www.esraturan.com.tr\/wp-content\/uploads\/2026\/02\/image-1-1024x1014.png 1024w, https:\/\/www.esraturan.com.tr\/wp-content\/uploads\/2026\/02\/image-1-300x297.png 300w, https:\/\/www.esraturan.com.tr\/wp-content\/uploads\/2026\/02\/image-1-150x150.png 150w, https:\/\/www.esraturan.com.tr\/wp-content\/uploads\/2026\/02\/image-1-768x761.png 768w, https:\/\/www.esraturan.com.tr\/wp-content\/uploads\/2026\/02\/image-1.png 1138w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u0130lk olarak MhtParsel ad\u0131nda bir class olu\u015fturuyoruz. Daha sonra Xtrareportumuzun data source doldurduktan sonra raporumuzun layoutunu y\u00fckl\u00fcyoruz.Daha sonra Mime html \u00e7evirdikten sonra daha \u00f6nce olu\u015fturdu\u011fumuz klas\u0131m\u0131z\u0131 \u00e7a\u011f\u0131r\u0131yoruz. AlternateView htmlView de\u011ferini mail g\u00f6nderme servisine g\u00f6nderiyoruz. MailMessage mail = new MailMessage(); mail.AlternateViews.Add(htmlView ); Bu \u015fekilde g\u00f6nderilmesi gerekir. Mail ekledi\u011fimiz \u00e7\u0131kt\u0131 \u00f6rne\u011fidir.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-12","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.esraturan.com.tr\/index.php\/wp-json\/wp\/v2\/pages\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esraturan.com.tr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.esraturan.com.tr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.esraturan.com.tr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esraturan.com.tr\/index.php\/wp-json\/wp\/v2\/comments?post=12"}],"version-history":[{"count":6,"href":"https:\/\/www.esraturan.com.tr\/index.php\/wp-json\/wp\/v2\/pages\/12\/revisions"}],"predecessor-version":[{"id":114,"href":"https:\/\/www.esraturan.com.tr\/index.php\/wp-json\/wp\/v2\/pages\/12\/revisions\/114"}],"wp:attachment":[{"href":"https:\/\/www.esraturan.com.tr\/index.php\/wp-json\/wp\/v2\/media?parent=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}