【问题标题】:Outlook embedded image to HTML with inline image带有内嵌图像的 Outlook 嵌入图像到 HTML
【发布时间】:2012-04-22 20:28:29
【问题描述】:

我们有一个论坛解决方案,允许人们通过电子邮件提交帖子。目前,在解析邮件时,图像只是作为附件添加到帖子中。我们想要做的是解析电子邮件并从邮件中获取嵌入的图像,并将它们转换为输出 HTML 中的内联图像。我们需要支持任何电子邮件客户端 Outlook、Hotmail、Gmail 等

Outlook 原始邮箱:

<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 How to extract embedded image from email message?

我们需要破解 RegEx 还是有可以简化此操作的库?我确信我们不是唯一想要将电子邮件呈现为 HTML 的人

【问题讨论】:

  • 我不明白问题出在哪里。这是关于解析原始消息的吗?这是关于在 URL 中公开图像?

标签: c# email


【解决方案1】:

您当然可以编写代码来提取嵌入的图像,然后自己修改主体。这可能最终会成为很多工作。

我们使用来自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++;
}

【讨论】:

  • Quiksoft 已关闭。
  • 好吧,那真是太糟糕了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 2011-09-19
  • 2015-03-28
  • 2012-07-29
  • 1970-01-01
  • 2015-12-30
  • 2012-03-30
相关资源
最近更新 更多