Не удалось найти изображение с CID в сервисе windows - PullRequest
0 голосов
/ 25 января 2020

Я проверяю отправку электронного письма с изображениями с помощью CID-тега, я делаю настольное приложение, которое только запускает почту, программа попросила меня также поместить их в папку отладки проекта, кроме папки, в которую я положил их, теперь я отправляю его в службу windows, но он сообщает мне, что

Не удалось найти файл 'C: \ WINDOWS \ system32 \ img.png

Я уже поместил изображение в эту папку, но оно все равно выдает мне ту же ошибку, изображение имеет тип .png, это мой код электронной почты

private void SendMAil()
        {

            string htmlBody = "<!DOCTYPE html>" +
"<html xmlns = 'http://www.w3.org/1999/xhtml'>" +
            "<head>" +
 "<meta http - equiv = 'Content-Type' content = 'text/html; charset=UTF-8'/>" +
      "<title> Demystifying Email Design</title>" +
         "<meta name = 'viewport' content = 'width=device-width, initial-scale=1.0'/>" +
            "</head>" +
            "<body style = 'margin: 0; padding: 0;'>" +
  "<table align = 'center' border = '0' cellpadding = '0' cellspacing = '0' width = '900' > " +
                        "<tr>" +
         "<td align='left' bgcolor='#F8F8F8' style='padding: 15px 0 15px 0;border-bottom-width:6px;border-bottom-color:#225100;border-bottom-style:solid;'>" +
          " <img  src=\"cid:img\"' width='90' height='40'>" +
         "</td>" +
        "</tr>" +
                         "<tr>" +
         "<td bgcolor = '#ffffff' style='padding:30px 30px 65px 30px'>" +
         "HELLO!!!"+
          "</td>" +
         "</tr>" +
                          "<tr>" +
         "<td bgcolor = '#FFFFFF' align='center' style='padding: 15px 0 15px 0;border-top-width:1px;border-top-color:#FA5300;border-top-style:solid;'>" +           
          "</td>" +
         "</tr>" +
           "</table>" +
        "</body>" +
            "</html>";
            AlternateView avHtml = AlternateView.CreateAlternateViewFromString
               (htmlBody, null, MediaTypeNames.Text.Html);

            LinkedResource inline = new LinkedResource("img.png", MediaTypeNames.Image.Jpeg);
            inline.ContentId = "img";
            avHtml.LinkedResources.Add(inline);

            Attachment att1 = new Attachment(@"img\img.png");
            att1.ContentDisposition.Inline = true;

            mail.From = new MailAddress("xx@xx.com");
            mail.To.Add("xx@xx.com");
            mail.Subject = "Alerta Estado Tags";
            mail.Body = inline.ContentId;
            mail.IsBodyHtml = true;

            SmtpClient smtp = new SmtpClient
            {
                Credentials =
                    new NetworkCredential("xx@xx.com", "****"),
                Host = "smtp.gmail.com",
                Port = 000,
                EnableSsl = true
            };
            smtp.Send(mail);
            mail.Dispose();
        }

Где я могу разместить изображения? и какой будет путь?

Ответы [ 2 ]

1 голос
/ 25 января 2020

Тег cid используется для ресурсов, встроенных в само письмо. Таким образом, вы должны добавить изображение в виде вложения с определенным кодом (в данный момент его нет наготове). Это сказало: не используйте это. Он устарел и заблокирован многими почтовыми клиентами. Сохраните свои фотографии на веб-сервере и просто дайте ссылку на них.

1 голос
/ 25 января 2020

Пожалуйста, проверьте ваш код, вы используете 2 пути для файла img.png, один раз без указания дополнительного пути, что приведет к попытке программы выполнить поиск файла в текущем рабочем каталоге (system32 в вашем случае) и после поиска в папке img (которая также должна находиться в вашем текущем рабочем каталоге).

В вашем примере кода есть другие проблемы:

  1. вы не ассоциируете avHtml к сообщению электронной почты в любом месте. mail.AlternateViews.Add
  2. где вы инициализируете объект mail?

Но самое главное, как вы выполняете свою программу? Я предполагаю, что вы используете командную строку windows и перетаскиваете программу по полному пути, в результате чего ваш текущий рабочий каталог остается в System32 (который является каталогом по умолчанию CMD при работе от имени администратора.

Следовательно, он ищет img.png и img/img.png в System32

...