2 Stimmen

Wie man ein Bild in Outlook 2007 VSTO einbindet

Hallo Leute, ich erstelle ein Outlook 2007 Add-In. Ich habe eine Reihe von Bildern in meinem Ressourcenordner meines Projekts. Ich mache eine Schleife über die Bilder im Ressourcenordner und erstelle für jedes Element Schaltflächen und setze den Hintergrund der Schaltflächen auf das Bild. Dann möchte ich bei einem Klick auf die Schaltflächen das Bild der Schaltfläche zum E-Mail-Body hinzufügen. Ich habe die unten stehende Methode, aber ich kann das Bildobjekt nicht an die Methode übergeben, ich brauche den vollständigen Pfad des Bildes.

Bitte geben Sie Ratschläge, was zu tun ist!

if (!string.IsNullOrEmpty(mail.HTMLBody) && mail.HTMLBody.ToLower().Contains(""))
                {
                    int mailBodyLength;
                    if (mail.Body == null)
                    {
                        mailBodyLength = 0;
                    }
                    else
                    {
                        mailBodyLength = mail.Body.Length;
                    }
                    //Bild + Link abrufen
                    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();

                    //Bild anhängen               
                    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);

                    //Banner erstellen und hinzufügen
                    string banner = string.Format(@"", linkAddress, contentID);
                    mail.HTMLBody = mail.HTMLBody.Replace("", banner);

                    mail.Save();
                }

Vielen Dank im Voraus.

1voto

Denys Wessels Punkte 16583

Warum speichern Sie das Bild nicht im Temp-Ordner und löschen es sofort nach dem Anhängen an das Mail-Objekt:

using System.Reflection;
using System.IO;

//Bild anhängen
object fehlend = System.Reflection.Missing.Value;

Bild auto = OutlookAddIn1.Properties.Resources.Car;

string pfad = Path.Combine(Path.GetTempPath(), "Car.jpg");
auto.Save(pfad);

if (File.Exists(pfad))
  {
   mail.Attachments.Add(pfad,Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue,fehlend, fehlend);
   File.Delete(pfad);
  }

1voto

VhsPiceros Punkte 396

Johnnie, ich glaube, es handelt sich nur um einen einfachen Fehler. Hier ist die Änderung, die ich vorgenommen habe.

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

zu

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X