我们正在尝试通过将图像放在邮件正文中来发送电子邮件。但是它没有显示在收到的电子邮件中。我的代码将图像附加到我的电子邮件正文。请帮我解决问题。
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 :(得分:0)
构建电子邮件的另一个选择是使用 RazorEngine (您必须在项目中安装它)。
您可以拥有以下内容:
mail.Body = Razor.Parse(param1, param2);
其中param1是cshtml的路径,param2代表模型。
通过在模型属性中保留图像的路径,您甚至可以为每封电子邮件创建特定的图片。
度过美好的一天!