如何将图像作为附件删除,但在电子邮件正文中显示

15 浏览
0 Comments

如何将图像作为附件删除,但在电子邮件正文中显示

我发现了一个在电子邮件正文中显示图像的解决方案:

将图像添加到电子邮件正文

这个方法很好用,但它也会将图像作为附件添加到电子邮件中。

Attachment inlineLogo = new Attachment(EmailLogo.ImageUrl);
mailMsg.Attachments.Add(inlineLogo);
string contentID = "Image";
inlineLogo.ContentId = contentID;
//将图像显示为内嵌而不是附件
inlineLogo.ContentDisposition.Inline = true;
inlineLogo.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
//将图像嵌入电子邮件
mailMsg.Body = "  ";

有一行代码的注释是将图像显示为内嵌而不是附件,但是这行代码没有生效,因为图像仍然作为附件附加到电子邮件中:

//将图像显示为内嵌而不是附件
inlineLogo.ContentDisposition.Inline = true;
inlineLogo.ContentDisposition.DispositionType = DispositionTypeNames.Inline;

如何阻止图像附加到电子邮件中?

0
0 Comments

问题的原因是,如果想在电子邮件中显示图片,图片必须存在于某个地方。它可以作为邮件负载的一部分附加(无论是作为“内联显示”还是真正的“附件”),或者在读者阅读邮件时从远程Web服务器获取图片(并且可以选择“查看图片”)。

要在电子邮件负载中不附加图片本身,需要进行以下操作:

  1. 您必须将图片托管在公共Web服务器上,以便打开邮件的读者可以访问它。
  2. 您必须在消息正文源中使用完全限定的URL,以便可以找到它。

假设您已将图片存储在您的Web服务器上的以下URL中:

http://www.example.com/images/myimage.jpg

... 那么您的源代码应该简单地更改为:

mailMsg.Body = "<html><body> <img height=\"49\" width=\"169\" src=\"http://www.example.com/images/myimage.jpg\"> </body></html>";

不需要附加它。

0
0 Comments

问题的原因是想要在电子邮件正文中显示图片,而不是作为附件。解决方法是使用DataURL来嵌入图片,并将其转换为base64字符串,然后将其分配给标签的src属性。下面是解决方法的详细步骤:

1. 将图片文件转换为base64字符串。可以使用编程语言或在线工具来完成此操作。

2. 在电子邮件正文中创建标签,将其高度、宽度和src属性设置为Data URL格式。例如:

3. 将创建的标签添加到邮件正文的HTML代码中。

通过按照上述步骤操作,可以在电子邮件正文中嵌入图片,而不是作为附件显示。这样做可以避免一些电子邮件客户端过滤附件的问题。

0
0 Comments

问题的原因是要在邮件正文中显示图片,但是图片被作为附件发送。解决方法是使用AlternateView和LinkedResource来嵌入图片,并将其作为邮件的一个视图添加到邮件中。

使用AlternateView和LinkedResource可以将带有嵌入图片的HTML代码存储起来。首先创建一个LinkedResource对象,将图片的URL和类型传入构造函数,并为其设置ContentId。然后创建一个AlternateView对象,将HTML代码作为参数传入CreateAlternateViewFromString方法中,并将编码设置为UTF8,类型设置为text/html。然后将LinkedResource对象添加到AlternateView对象的LinkedResources集合中。最后,将AlternateView对象添加到邮件的AlternateViews集合中。

下面是示例代码:

string contentID = "Image";
var inlineLogo = new LinkedResource(EmailLogo.ImageUrl, "image/png");    
inlineLogo.ContentId = contentID;
var htmlView = AlternateView.CreateAlternateViewFromString(
    "  ",
    Encoding.UTF8, "text/html");
htmlView.TransferEncoding = TransferEncoding.QuotedPrintable;
htmlView.LinkedResources.Add(inlineLogo);
mailMsg.AlternateViews.Add(htmlView);

注意:将图片嵌入为base64字符串不是一个很好的方法,因为许多邮件客户端不支持此功能。

0