2016-03-29 18 views
0

在我的asp.net网站,我有功能发送HTML功能的电子邮件。这些电子邮件是使用SMTP发送的,这些电子邮件包含图像并且也是指css文件。问题在于收到的电子邮件中的图像在Gmail,雅虎和其他域中打开时不显示。我在电子邮件的HTML中使用的CSS代码/文件也出现了同样的问题。图像和CSS没有加载从asp.net网站发送的电子邮件

我使用下面的代码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

您可以发布P本体的内容? – user65439

+0

图像和css文件是在本地还是在网上?我认为它在你的本地,所以我认为你需要在你的电子邮件中附加图像和CSS文件。 –

回答

0

你必须呈现你的HTML。我们使用RazorHelper功能和部分视图来完成此操作,以设计您的电子邮件。 有此功能在一个辅助类:

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); 
相关问题