2016-03-29 15 views
0

私のasp.netウェブサイトには、HTML対応のメールを送信する機能があります。これらの電子メールはSMTPを使用して送信され、これらの電子メールにはイメージが含まれており、cssファイルも参照しています。問題は、受信した電子メールの画像がGmail、Yahooおよび他のドメインで開かれたときに表示されないことです。電子メールのHTMLで使用しているCSSコード/ファイルについても同じ問題が発生しています。asp.netウェブサイトから送信されたメールに画像とCSSがロードされていません

私は電子メールを送信するSMTPコードの下に使用しています:

 string _mailFrom = ConfigurationManager.AppSettings["mailfrom"].ToString(); 
     string _emailTo = ConfigurationManager.AppSettings["ScheduledServiceRecipientTO"].ToString(); 
     string _emailCC = ConfigurationManager.AppSettings["ScheduledServiceRecipientCC"].ToString(); 

     var _mailMessage = new System.Net.Mail.MailMessage(); 
     _mailMessage.To.Add(_emailTo); 
     _mailMessage.CC.Add(new MailAddress(_emailCC)); 
     _mailMessage.From = new MailAddress(_mailFrom); 
     _mailMessage.Subject = subject; 
     _mailMessage.Body = pBody; 
     _mailMessage.IsBodyHtml = true; 

     try 
     { 
      var smtp = new System.Net.Mail.SmtpClient(); 
      { 
       smtp.Host = ConfigurationManager.AppSettings["Host"]; 
       smtp.Port = Convert.ToInt32(ConfigurationManager.AppSettings["Port"]); 
       //smtp.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["UserName"], ConfigurationManager.AppSettings["Password"]); 
      } 

      smtp.Send(_mailMessage); 
      return true; 
     } 

     catch (Exception ex) 
     { 
      throw new Exception(ex.Message); 
     } 

この問題を解決するために私を助けてください。

ありがとうございます。

+1

あなたがpBodyのコンテンツを投稿することができますか? – user65439

+0

あなたのローカルにある画像ファイルとCSSファイルは、ウェブ上にありますか?私はそれがあなたの地域にあると仮定したので、あなたは電子メールに画像とCSSファイルを添付する必要があると思います。 –

答えて

0

HTMLをレンダリングする必要があります。私たちはRazorHelper FunctionとPartial Viewを使って電子メールのスタイルを設定します。 この機能は、ヘルパークラスである:

public static string RenderPartialViewToString(Controller controller, string viewName, object model) 
{ 
    controller.ViewData.Model = model; 
    using (var sw = new StringWriter()) 
    { 
     ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName); 
     var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw); 
     viewResult.View.Render(viewContext, sw); 

     return sw.GetStringBuilder().ToString(); 
    } 
} 

コントローラコンテキストでそれを呼び出す:

email.Body = RazorHelper.RenderPartialViewToString(this, "PartialViewName", model); 
関連する問題