Как встроить изображение в Outlook 2007 VSTO - PullRequest
2 голосов
/ 06 февраля 2012

Привет, ребята. Я создаю надстройку для Outlook 2007.У меня есть куча изображений в папке ресурсов моего проекта, я делаю foreach для изображений внутри папки ресурсов, создаю элемент 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();
                }

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Джонни, я считаю, что это всего лишь простая ошибка. Вот изменение, которое я сделал.

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

до

mail.Attachments[mail.Attachments.Count].PropertyAccessor.SetProperty(schemaPrAttachContentId, contentId);
1 голос
/ 08 февраля 2012

Почему бы вам не сохранить изображение во временной папке, а затем сразу же удалить его после прикрепления к почтовому объекту:

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