2017-01-11 12 views
0

画像をメール本文に入れてメールを送信しようとしていますが、受信したメールに画像が表示されていません。メールの本文に画像を添付するコードがあります問題を解決するのを手伝ってください。ランタイムメール本文に画像を埋め込む方法

string Body = mainContent.ToString(); 
      AlternateView htmlView = AlternateView.CreateAlternateViewFromString(Body.ToString(), null, "text/html"); 

      HtmlDocument document = new HtmlDocument(); 
      document.LoadHtml(Body); 
      document.DocumentNode.Descendants("img") 
           .Where(e => 
           { 
            string src = e.GetAttributeValue("src", null) ?? ""; 
            return !string.IsNullOrEmpty(src) && !src.StartsWith("data:image"); 
           }) 
           .ToList() 
           .ForEach(x => 
           { 
            string currentSrcValue = x.GetAttributeValue("src", null); 

            string contentId = Guid.NewGuid().ToString(); 
            LinkedResource inline = new LinkedResource(System.Web.Hosting.HostingEnvironment.MapPath("~"+currentSrcValue)); 
            inline.ContentId = contentId; 
            inline.TransferEncoding = TransferEncoding.Base64; 

            x.SetAttributeValue("src", "cid:" + inline.ContentId); 
            htmlView.LinkedResources.Add(inline); 
           }); 


      string result = document.DocumentNode.OuterHtml; 


      mail.IsBodyHtml = true; 
      htmlView = AlternateView.CreateAlternateViewFromString(result.ToString(), null, "text/html"); 
      mail.AlternateViews.Add(htmlView); 
+0

電子メールに画像を埋め込む簡単な方法については、[this StackOverflow Link](http://stackoverflow.com/a/30126266/2803565)を参照してください。 –

答えて

0

メールを構築するための別のオプションは、RazorEngine(あなたのプロジェクトにインストールする必要があります)を使用することです。

あなたは以下のようなものを持つことができます。

のparam1はCSHTMLとPARAM2へのパスをある
mail.Body = Razor.Parse(param1, param2); 

はモデルを表しています。

画像のパスをモデルプロパティに保存することで、メールごとに特定の画像を表示することもできます。

楽しい一日を!

関連する問題