电子邮件HTML文档,使用c#嵌入图片

5

我需要以HTML格式发送一封包含嵌入式图片的字符串邮件。我试图将我的图片转换成base64格式,但是并没有成功。

这个邮件有3个类型为System.Drawing.Image的图片。我只需要在我的HTML格式字符串中获取它们。


我相信您可以将base64字符串用作“img”标记的“src”属性。具体而言,您尝试了什么? - Colin DeClue
部分正确:它可以使用src="data:image/png;base64,YOUR_BASE_64_ENCODED_DATA"工作,但并不是普遍支持的。 - Dragos Bobolea
可能是重复的问题:如何在电子邮件中嵌入图片 - George Duckett
可能是在HTML电子邮件中嵌入图像的重复问题。 - Marcel De Villiers
2个回答

42

使用System.Net.Mail发送邮件时,嵌入图片的另一种方式是将本地驱动器上的图像作为附件添加到电子邮件中,并为其分配一个contentID,然后在图像URL中使用这个contentID

可以像下面这样完成:

msg.IsBodyHtml = true;
Attachment inlineLogo = new Attachment(@"C:\Desktop\Image.jpg");
msg.Attachments.Add(inlineLogo);
string contentID = "Image";
inlineLogo.ContentId = contentID;

//To make the image display as inline and not as attachment

inlineLogo.ContentDisposition.Inline = true;
inlineLogo.ContentDisposition.DispositionType = DispositionTypeNames.Inline;

//To embed image in email

msg.Body = "<htm><body> <img src=\"cid:" + contentID + "\"> </body></html>";

2
非常好的解决方案。现在我可以做其他事情度过我的一天了。 ;) - Samuel
1
救了我的一天,最干净的解决方案,对我有用 +1 - Albert Cortada
非常好。非常感谢 :) - Bojan Zloporubovic

2
你对转换为base64的想法是正确的,但仅仅嵌入还不够(客户端无法区分base64和纯文本),你需要对其进行一些格式化。
请查看Buhake的回答,它很好地涵盖了这个问题(你应该能够从中了解到更多): 如何在电子邮件中嵌入图像

Base64是一个不错的解决方案,但对于我的应用程序来说并不适用,因为需要发送高质量的图像。我简单地看了一下,发送单个图像将导致一个2300页的文本文件。我通过不将它们嵌入到HTML电子邮件本身中来解决了这个问题。我只是将它作为附件发送,并在HTML中动态引用它。 - Marcel De Villiers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接