繁体   English   中英

邮件正文中的嵌入式图像未显示在Winforms的Webbrowser控件中

[英]Embedded image in mail body is not displayed in webbrowser control in winforms

我想将Outlook邮件正文的内容放入Winforms中的Web浏览器控件中。 如果我使用以下代码,则会显示所有内容,但不会显示页面中的图像。 我正在使用Outlook 2013和VS2012。

webBrowser1.DocumentText = mail.HTMLBody;

我检查了html,它显示出类似以下内容:

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

由于我想在项目中实现它,因此无法按照此处的建议将邮件正文保存在本地: 如何使用C#从当前Outlook电子邮件中嵌入图像? ^]

任何帮助深表感谢。

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

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

以下是您需要执行的操作:

    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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM