如何使用razor引擎进行图像src的电子邮件模板化

我已经找到了关于如何在asp.net中使用Razor Engine用于电子邮件模板的链接 ,并且它运行良好。 但我试图在电子邮件模板中添加带有图像的徽标。

像这样的东西:

EmailTemplate.cshtml (顺便说一下,这是一个强类型视图)

      

当我尝试在电子邮件中提交它时,似乎没有读取图像路径,它只在内容中呈现X.

我正在考虑将图像路径作为模型的一部分传递,但它似乎很奇怪。 有没有办法实现这个目标?

任何帮助将非常感激。 谢谢

要在任何地方看图像,您可以使用以下选项:

绝对的url

您可以简单地使用完整的图像绝对路径,例如"http://example.com/images/logo.png"

IMO这是最简单的选项,推荐用于您的问题。

附件

正如Mason在评论中提到的那样您可以将图像附加到邮件,然后放置图像标记并使用附件的ContentId

 //(Thanks to Mason for comment and Thanks to Bartosz Kosarzyck for sample code) string subject = "Subject"; string body = @" 
Some Content"; MailMessage mail = new MailMessage(); mail.From = new MailAddress("from@example.com"); mail.To.Add(new MailAddress("to@example.com")); mail.Subject = subject; mail.Body = body; mail.Priority = MailPriority.Normal; string contentID = Guid.NewGuid().ToString().Replace("-", ""); body = body.Replace("$CONTENTID$", "cid:" + contentID); AlternateView htmlView = AlternateView.CreateAlternateViewFromString(body, null, "text/html"); //path of image or stream LinkedResource imagelink = new LinkedResource(@"C:\Users\R.Aghaei\Desktop\outlook.png", "image/png"); imagelink.ContentId = contentID; imagelink.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; htmlView.LinkedResources.Add(imagelink); mail.AlternateViews.Add(htmlView); SmtpClient client = new SmtpClient(); client.Host = "mail.example.com"; client.Credentials = new NetworkCredential("from@example.com", "password"); client.Send(mail);

数据Uri

你可以使用数据uri(data:image / png; base64,….)。

不推荐,因为大多数邮件客户端支持不足,我使用Outlook.com(web)OutlookWebAccess(web)以及Office Outlook(Windows)Outlook(windows 8.1)它,不幸的是它仅适用于OutlookWebAccess(web)