【问题标题】:HTML content is not rendered in an Email [duplicate]HTML 内容未在电子邮件中呈现 [重复]
【发布时间】:2016-05-14 07:49:58
【问题描述】:

我想打开(不是发送)一封内容为 HTML 格式的电子邮件。 我正在使用 javascript 的 mailto,并且我在 c#.net 中创建了一个包含 html 的字符串,但邮件显示标签而不是呈现 HTML。我想我错过了一个内容类型:text/html,但我该怎么说呢?还是有更正确的方法来打开包含内容的电子邮件?

这是获取 html 页面的 c#.net 代码

  [HttpPost]
    public ActionResult SetMailContent(int entreatyID)
    {
         Entreaties entreaty = db.Entreaties.Where(e => e.ID == entreatyID).FirstOrDefault();
         if (entreaty == null)
         {
             return new HttpStatusCodeResult(HttpStatusCode.NotFound, "File Not Found");
         }

         StringWriter stringWriter = new StringWriter();
         using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
         {
             writer.RenderBeginTag(HtmlTextWriterTag.H1);
             writer.Write(entreaty.OpenDate.ToString("dd/MM/yyyy"));
             writer.RenderEndTag();
         }

         string msg = stringWriter.ToString();
         return Json(new { message = msg});
    }

和javascript代码:

window.location = "mailto:mail@gmail.com?body=" + SetMailContent(EntreatyID) + "&subject= " + EntreatyID;

感谢您的帮助。

【问题讨论】:

  • 如我所见here,这是不可能的,因为您无法使用它设置电子邮件格式。除了设置 windows.location 之外,您是否可以使用其他方式来执行此操作?也许还有其他解决方案。
  • 感谢您的回复,请问有没有其他方法可以不通过mailto打开带有html内容的邮件?

标签: javascript c# mailto


【解决方案1】:

您需要将 HTML 内容添加到 DOM,而不仅仅是将其显示为字符串。例如,您可以通过 jQuery 执行此操作:

$("#containerId").append($("your mail content"));

【讨论】: