Изображение не отображается на сервере - PullRequest
0 голосов
/ 12 июня 2018

У меня есть логотип, который мне нужно показать на почте.На моем локальном компьютере логотип отображается, но на сервере, где находится среда, логотип не отображается.

Я использую следующий путь:

imagePath = "~/Images/email-logo2.png";

email-logo2.png существует в одной и той же папке на локальном компьютере и на сервере.

enter image description here

Я попытался добавить разрешения на чтение впапка сервера, где существует png, но это не решило проблему.Можете ли вы посоветовать?

Изображение добавляется в электронное письмо следующим образом:

HTML:

<img class="auto-style4" src="{PictureSrc}" /><br />

Код C #:

switch (property)
{
    case "PictureSrc":
        string imagePath = "";

        if (User.Identity.GetUserId<int>() == 3140 || 
            User.Identity.GetUserId<int>() == 3142)
        {
            imagePath = "~/Images/email-logo2.png";
        }
        else
        {
            imagePath = "~/Images/email-logo.png";
        }

        content = content.Replace("{" + property + "}", HttpContext.Server.MapPath(imagePath));

1 Ответ

0 голосов
/ 12 июня 2018

Server.MapPath возвращает путь на диске (например, C:\images\image.png), а не URL.См. https://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath(v=vs.110).aspx.

Таким образом, пользователь, просматривающий электронную почту с другого компьютера, очевидно, не сможет определить путь на диске сервера, у него нет доступа к этому диску.

Путь к изображению, который вы предоставляете, должен быть полностью определенным URL, например http://www.example.com/images/image.png.

Это работало локально, потому что вы находитесь на той же машине, где находится изображение, поэтому у него есть доступ к этому пути, но это не так для всех, кто его использует.

В качестве альтернативы, если изображение не слишком большое, вы можете преобразовать его в base64 и вставить его в HTML в электронном письме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...