在我的asp.net网站上,我有发送支持HTML的电子邮件的功能。这些电子邮件是使用SMTP发送的,这些电子邮件包含图像,也是指css文件。问题是,在gmail,yahoo和其他域中打开时,收到的电子邮件中的图像不会显示。我在电子邮件的HTML中使用的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);
}
请帮我解决这个问题。
提前致谢。
答案 0 :(得分: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();
}
}
然后在Controller上下文中调用它:
email.Body = RazorHelper.RenderPartialViewToString(this, "PartialViewName", model);