Outlook 嵌入的图像到带有内联图像的 HTML
本文关键字:图像 HTML Outlook | 更新日期: 2023-09-27 18:30:31
我们有一个论坛解决方案,允许人们通过电子邮件提交帖子。目前,在解析邮件时,图像只是作为附件添加到帖子中。我们要做的是解析电子邮件并从邮件中获取嵌入的图像,并将它们转换为输出HTML中的内联图像。我们需要支持任何电子邮件客户端Outlook,Hotmail,Gmail等
展望原始电子邮件:
<img id="Picture_x0020_1" src="cid:image001.jpg@01CD172C.038D3C80">
期望的结果是我们保存附件并将 src 作为
<img id="Picture_x0020_1" src="http://www.site.com/default.aspx?action=ViewAttachment&paid=594">
我知道我们可以通过以下内容获取图像: .NET 如何从电子邮件中提取嵌入图像?
我们是否需要破解正则表达式,或者是否有库可以简化这一点?我敢肯定,我们不是唯一想要将电子邮件呈现为 HTML 的人
您当然可以编写代码来提取嵌入的图像,并自己修改正文。 它最终可能会做很多工作。
我们使用 http://www.quiksoft.com/的 EasyMail.net
以下足以帮助您入门:
private POP3 pop3 = new POP3();
pop3.Connect(pop3Address, port);
var memoryStream = new MemoryStream();
pop3.DownloadMessage(position, memoryStream);
var email = new EmailMessage(memoryStream)
var streamView = new HTMLStreamView(email, urlPrefix);
string body = streamView.Body;
int counter = 0;
foreach (Stream stream in streamView.Streams)
{
if (counter != 0)
{
stream.Position = 0;
byte[] embeddedObjectBytes = new byte[(int)stream.Length];
stream.Read(embeddedObjectBytes, 0, (int)stream.Length);
string urlAndCounter = urlPrefix + counter.ToString();
string uniqueUrlAndCounter = GetUniqueUrl(urlAndCounter);
if (body.Contains(urlAndCounter + "'""))
{
body = body.Replace(urlAndCounter + "'"", uniqueUrlAndCounter + "'"");
}
else if (body.Contains(urlAndCounter + " "))
{
body = body.Replace(urlAndCounter + " ", uniqueUrlAndCounter + " ");
}
SaveEmbeddedObject(embeddedObjectBytes,uniqueUrlAndCounter);
}
counter++;
}