如何使用razor引擎进行图像src的电子邮件模板化
我已经找到了关于如何在asp.net中使用Razor Engine用于电子邮件模板的链接 ,并且它运行良好。 但我试图在电子邮件模板中添加带有图像的徽标。
像这样的东西:
EmailTemplate.cshtml
(顺便说一下,这是一个强类型视图)
当我尝试在电子邮件中提交它时,似乎没有读取图像路径,它只在内容中呈现X.
我正在考虑将图像路径作为模型的一部分传递,但它似乎很奇怪。 有没有办法实现这个目标?
任何帮助将非常感激。 谢谢
要在任何地方看图像,您可以使用以下选项:
绝对的url
您可以简单地使用完整的图像绝对路径,例如"https://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:UsersR.AghaeiDesktopoutlook.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)
。
上述就是C#学习教程:如何使用razor引擎进行图像src的电子邮件模板化分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1024910.html