邮件正文中的嵌入图像不会显示在winforms中的webbrowser控件中

时间:2015-10-21 10:37:21

标签: c# winforms outlook

我想将outlook邮件正文的内容放入winforms的webbrowser控件中。 如果我使用以下代码,则显示所有内容,但不显示页面中的图像。 我正在使用outlook 2013和VS2012。

webBrowser1.DocumentText = mail.HTMLBody;

我检查了html它显示的内容如下: 它显示如下:

<img id=\"Picture_x0020_7\" src=\"cid:image002.png@01D10B5C.06CC63D0\" width=\"904\" height=\"768\">

由于我想在项目中实现它,我无法按照此处的建议将邮件正文保存在本地:how to get embed image from current outlook email with c#? ^]

任何帮助深表赞赏。

2 个答案:

答案 0 :(得分:2)

您可以在邮件项目中找到作为附件存储的引用嵌入图像。您可以将它们保存在磁盘上或上传到任何Web服务器,然后将代码中src标记的<img/>属性内容替换为新值,以便浏览器可以正确显示图像。

或者只是尝试使用HTML文件格式保存邮件项目。 MailItem类的SaveAs方法将Microsoft Outlook项目保存到指定的路径并以指定的文件类型的格式。如果未指定文件类型,则使用MSG格式(.msg)。注意,您需要使用Type参数的olHTML值。

答案 1 :(得分:0)

以下是您需要做的事情:

    private void sendInlineImg() {
    MailMessage mail = new MailMessage();
    mail.IsBodyHtml = true;
    mail.AlternateViews.Add(getEmbeddeImage());
    mail.From = new MailAddress("yourAddress@yourDomain");
    mail.To.Add("recipient@hisDomain");
    mail.Subject = "yourSubject";
    //YourSMTPClient.Send(mail); //* Set your SMTPClient before!
}
private AlternateView getEmbeddeImage() {
    string yourFile = "c:/header.png";
    LinkedResource inline = new LinkedResource(yourFile);
    inline.ContentId = Guid.NewGuid().ToString();
    string htmlBody = @"<img src='cid:" + inline.ContentId + @"'/>";
    AlternateView alternateView = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html);
    alternateView.LinkedResources.Add(inline);
    return alternateView;
}