如何在Outlook 2007 VSTO中嵌入图像

本文关键字:图像 VSTO 2007 Outlook | 更新日期: 2023-09-27 18:22:33

大家好,我正在创建一个Outlook 2007插件。我在我的项目的资源文件夹中有一堆图像,我在资源文件夹中的图片上做了一个foreach,并在每个项目中创建按钮,并将按钮背景设置为图像。然后在按钮上单击我想将按钮的图像添加到电子邮件正文中。我下面有这个方法,但我无法将IMage对象传递给我需要图像完整路径的方法。

请告诉我该怎么做!

if (!string.IsNullOrEmpty(mail.HTMLBody) && mail.HTMLBody.ToLower().Contains("</body>"))
                {
                    int mailBodyLength;
                    if (mail.Body == null)
                    {
                        mailBodyLength = 0;
                    }
                    else
                    {
                        mailBodyLength = mail.Body.Length;
                    }
                    //Get Image + Link
                    Image imagePath = image;
                    object linkAddress = "http://www.pentavida.cl";
                    //CONTENT-ID
                    const string SchemaPR_ATTACH_CONTENT_ID = @"http://schemas.microsoft.com/mapi/proptag/0x3712001E";
                    string contentID = Guid.NewGuid().ToString();
                    //Attach image               
                    mail.Attachments.Add(imagePath, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, mailBodyLength, Type.Missing);
                    mail.Attachments[mail.Attachments.Count].PropertyAccessor.SetProperties(SchemaPR_ATTACH_CONTENT_ID, contentID);
                    //Create and add banner
                    string banner = string.Format(@"<br/><a href=""{0}"" ><img src=""cid:{1}"" ></a></body>", linkAddress, contentID);
                    mail.HTMLBody = mail.HTMLBody.Replace("</body>", banner);
                    mail.Save();
                }

提前谢谢。

如何在Outlook 2007 VSTO中嵌入图像

为什么不将图像保存到临时文件夹中,然后在将其附加到邮件对象后立即将其删除:

using System.Reflection;
using System.IO;
//Attach image
object missing = System.Reflection.Missing.Value;
Image car = OutlookAddIn1.Properties.Resources.Car;
string path = Path.Combine(Path.GetTempPath(), "Car.jpg");
car.Save(path);
if (File.Exists(path))
  {
   mail.Attachments.Add(path,Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue,missing, missing);
   File.Delete(path);
  }

Johnnie,我相信这只是一个简单的错误。这是我做的改动。

mail.Attachments[mail.Attachments.Count].PropertyAccessor.SetProperties(SchemaPR_ATTACH_CONTENT_ID, contentID);

mail.Attachments[mail.Attachments.Count].PropertyAccessor.SetProperty(schemaPrAttachContentId, contentId);