【问题标题】:Couldn't find image with CID in windows service在 Windows 服务中找不到带有 CID 的图像
【发布时间】:2020-01-24 22:38:13
【问题描述】:

我正在测试使用 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();
        }

我将图像放在哪里?路径是什么?

【问题讨论】:

    标签: c# asp.net .net visual-studio windows-services


    【解决方案1】:

    请检查您的代码,您正在使用img.png 文件的 2 个路径,一次在没有指定任何其他路径的情况下,这将导致程序尝试在当前工作目录下搜索文件(在您的情况下为 system32)并在 img 文件夹中搜索(该文件夹也应该在您当前的工作目录中)。

    您的代码示例中还有其他问题,

    1. 您没有将avHtml 与任何地方的电子邮件相关联。 mail.AlternateViews.Add
    2. 您在哪里初始化mail 对象?

    但最重要的是,您如何执行您的程序? 我假设您正在使用 windows 命令行并使用其完整路径拖动程序,这会导致您当前的工作目录保留在 System32 下(这是以管理员身份运行时CMD 的默认目录。

    因此,它在 System32 下查找 img.pngimg/img.png

    【讨论】:

      【解决方案2】:

      cid 标签用于嵌入在电子邮件本身中的资源。因此,您必须将图像添加为带有特定代码的附件(目前没有准备好)。 那就是:不要使用它。它已过时并被许多电子邮件客户端阻止。将您的图片转储到网络服务器上,然后链接到它们。

      【讨论】:

        猜你喜欢
        • 2011-08-29
        • 1970-01-01
        • 2017-01-03
        • 2012-02-19
        • 1970-01-01
        • 2015-09-30
        • 2020-07-10
        • 2011-05-29
        • 1970-01-01
        相关资源
        最近更新 更多