电子邮件MVC

时间:2018-06-18 07:42:39

标签: asp.net-mvc email

我有一个奇怪的问题。 我需要从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.首先,我尝试添加图像的路径。这种方式适用于我的本地计算机,但不适用于实际站点所在的服务器。

  1. 我尝试添加图片的网址。当我将URL粘贴到浏览器中时,显示了图像,但在发送的电子邮件中,图像未显示,不在我的本地计算机中,而不在服务器上。 有趣的是,我将这些邮件发送到Outlook帐户。在那里没有显示图像,但如果我将邮件发送到我的雅虎帐户,则会显示图像。

  2. 我已经尝试将图片转换为base 64,正如您在code上看到的那样,并以image src替换。这样再次显示图像,而不是在我的本地机器上,如果我将邮件发送到Outlook帐户,则不在服务器端。如果我将邮件发送到雅虎帐户,则会显示邮件。

  3. 您能否告诉我可以尝试哪些方法来解决此问题?

1 个答案:

答案 0 :(得分:0)

几个月前,我在Outlook中遇到了同样的问题。在研究时,我了解到Outlook倾向于剥离嵌入式图像的电子邮件。我通过使用CID技术解决了它。该技术包括将图像附加到电子邮件,并在电子邮件模板中使用图像的CID对其进行引用。

首先,您需要获取图像的CID。在线有很多CID转换器可以做到这一点。然后,您只需要在模板的img src属性<img src="cid:" + yourCID + "/>"中使用CID。

注意:由于图像被附加,这将增加电子邮件的大小。