我有一个奇怪的问题。
我需要从MVC网站发送电子邮件。我有一个html
电子邮件模板,看起来像这样(图像部分):
...
<img class="auto-style4" src="{PictureSrc}" /><br />
<img src="data:image/png;base64,{pictureBase64}">
....
从控制器我更换如下参数:
case "PictureSrc":
string imagePath = "";
imagePath = "~/Images/email-logo.png";
//string base64 = Convert.ToBase64String(System.IO.File.ReadAllBytes(HttpContext.Server.MapPath(imagePath)));
//content = content.Replace("{pictureBase64}", base64);
content = content.Replace("{" + property + "}", HttpContext.Server.MapPath(imagePath));
break;
1.首先,我尝试添加图像的路径。这种方式适用于我的本地计算机,但不适用于实际站点所在的服务器。
我尝试添加图片的网址。当我将URL粘贴到浏览器中时,显示了图像,但在发送的电子邮件中,图像未显示,不在我的本地计算机中,而不在服务器上。 有趣的是,我将这些邮件发送到Outlook帐户。在那里没有显示图像,但如果我将邮件发送到我的雅虎帐户,则会显示图像。
我已经尝试将图片转换为base 64,正如您在code
上看到的那样,并以image src
替换。这样再次显示图像,而不是在我的本地机器上,如果我将邮件发送到Outlook帐户,则不在服务器端。如果我将邮件发送到雅虎帐户,则会显示邮件。
您能否告诉我可以尝试哪些方法来解决此问题?
答案 0 :(得分:0)
几个月前,我在Outlook中遇到了同样的问题。在研究时,我了解到Outlook倾向于剥离嵌入式图像的电子邮件。我通过使用CID技术解决了它。该技术包括将图像附加到电子邮件,并在电子邮件模板中使用图像的CID对其进行引用。
首先,您需要获取图像的CID。在线有很多CID转换器可以做到这一点。然后,您只需要在模板的img src
属性<img src="cid:" + yourCID + "/>"
中使用CID。
注意:由于图像被附加,这将增加电子邮件的大小。