发送嵌入了图像的电子邮件 - 图像不可见

11 c# asp.net email gmail smtp

我发送了一封带有C#库的电子邮件.电子邮件正文包含徽标.当我通过GMail的SMTP服务器发送此电子邮件时,图像可见.当我使用我们的域名admin@domaine.net时,图像不可见.

有没有人对这种差异有所了解?

Hog*_*gan 16

为了使其工作,您需要发送HTML文档,然后使用mime嵌入图像.

自从v2.0起,ASP.NET smtp对象为您完成了大部分脏工作.

这是一个来自微软网站的例子.原来的位置

  //Holds message information.
  System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();
  //Add basic information.
  mailMessage.From = new System.Net.Mail.MailAddress(txtFrom.Text.Trim());
  mailMessage.To.Add(txtTo.Text.Trim());

  mailMessage.Subject = txtSubject.Text.Trim();
  //Create two views, one text, one HTML.
  System.Net.Mail.AlternateView plainTextView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtBody.Text.Trim(), null, "text/plain");
  System.Net.Mail.AlternateView htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtBody.Text.Trim() + "<image src=cid:HDIImage>", null, "text/html");
  //Add image to HTML version
  System.Net.Mail.LinkedResource imageResource = new System.Net.Mail.LinkedResource(fileImage.PostedFile.FileName, "image/jpg");
  imageResource.ContentId = "HDIImage";
  htmlView.LinkedResources.Add(imageResource);
  //Add two views to message.
  mailMessage.AlternateViews.Add(plainTextView);
  mailMessage.AlternateViews.Add(htmlView);
  //Send message
  System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
  smtpClient.Send(mailMessage);
Run Code Online (Sandbox Code Playgroud)


小智 5

您想要将图像嵌入邮件消息中.和MailMessage正文类型应该是html

try

        {

            MailMessage mail = new MailMessage();

            mail.To.Add("to@gmail.com");

            mail.From = new MailAddress("from@gmail.com");

            mail.Subject = "Test with Image";

            string Body = "<b>Welcome</b><br><BR>Online resource for .net articles.<BR><img alt=\"\" hspace=0 src=\"cid:imageId\" align=baseline border=0 >";



            AlternateView htmlView = AlternateView.CreateAlternateViewFromString(Body, null, "text/html");

            LinkedResource imagelink = new LinkedResource(Server.MapPath(".") + @"\codedigest.png", "image/png");

            imagelink.ContentId = "imageId";

            imagelink.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;

            htmlView.LinkedResources.Add(imagelink);

            mail.AlternateViews.Add(htmlView);

            SmtpClient smtp = new SmtpClient();

            smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;

            smtp.Send(mail);

        }

        catch (Exception ex)

        {

            Response.Write(ex.Message);

        }
Run Code Online (Sandbox Code Playgroud)


Mic*_*tta 0

接收站点或邮件代理正在使用部分基于发件人的规则来阻止图像。您会发现,根据发送目的地的不同,结果也会有所不同。您对此可以采取的措施取决于接收者 - 您可以联系他们或查看他们发布的政策,看看您可以跳过哪些障碍来避免被阻止。