我想将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#? ^]
任何帮助深表赞赏。
答案 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;
}