![]() |
Outlook Bilder auslesen
Hallo Allgemeinheit,
bin eigentlich schon ne ganze Weile länger hier registriert, allerdings scheint das Passwort zusenden bei Verlust nicht zu funktionieren, musste mir jedenfalls jetzt einen neuen Benutzer anlegen (mein Alter heißt digleu). Soooaaa, nachdem ich also zur Genüge google und die Suchfunktion verschiedener Foren bemühte habe, habe ich mich dann also dazu entschieden mal nen Beitrag zu schreiben. Ich bin relativ frisch was OLE in Outlook angeht, komme aber jetzt in die Verlegenheit alle Outlook-Kontakte in mein Programm importieren zu müssen. Dazu habe ich schonmal folgenden Programmcode zusammengesucht (und auch soweit verstanden :)):
Delphi-Quellcode:
Dabei ist TMMOutlookContact eine von mir selbst erstellte Klasse, der ich einfach das entsprechende Variant Datenkonstrukt mit .readFromOle übergebe:
procedure TfrmOutlookSync.loadOutlookContacts;
const olFolderContacts = $0000000A; var outlook, NameSpace, Contacts: OleVariant; i: Integer; MMContact: TMMOutlookContact; begin listMain.Items.BeginUpdate; try listMain.Items.Clear; try outlook := CreateOleObject('Outlook.Application'); NameSpace := outlook.GetNameSpace('MAPI'); Contacts := NameSpace.GetDefaultFolder(olFolderContacts); for i := 1 to Contacts.Items.Count do begin MMContact := TMMOutlookContact.Create; try MMContact.ReadFromOle(Contacts.Items.Item(i)); listMain.Items.AddObject(IntToStr(i) + '. ' + MMContact.getFullName, MMContact); except listLog.Items.Add('Fehler bei i='+IntToStr(i)); end; end; Outlook := UnAssigned; except ShowMessage('Beim importieren ist ein Fehler aufgetreten. Möglicherweise ist Outlook nicht konfiguriert.'); end; finally listMain.Items.EndUpdate; end; end;
Delphi-Quellcode:
und .getFullName gibt einfach den Namen des Kontakts zurück. listMain ist eine Listbox wo ich das alles mal testweise anzeige, listLog ein Fehlerlog.
procedure TMMOutlookContact.ReadFromOle(AppOle: OleVariant);
begin // Contact := AppOle as ContactItem; FNachname := AppOle.Lastname; FVorname := AppOle.FirstName; FWeitererVorname := AppOle.MiddleName; end; Soa jetzt habe ich auch schon eine Liste von möglichen Eigenschaftsnamen dieses OleVariants im Internet gefunden und könnte damit schon an sehr viele Informationen kommen (gibts da irgendwo vielleicht eine vollständige Liste?), mein Problem ist allerdings, dass man in Outlook ja auch Bilder an seine Kontakte dranhängen kann und ich auch diese gerne auslesen würde. Habe nämlich keinen blassen Schimmer, wie der Eigenschftsname heißen könnt (.Image oder so?) und selbst wenn ich es wüsste hätte ich keine Ahnung wie ich die Daten in nen Stream oder in ne Datei bekommen könnte (letztenendlich solls in einer Datenbank abgelegt werden, aber das bekomme ich hin, weiß halt nur nicht wie ich an die Daten aus den Outlook-Kontakten drankommen soll). Danke für jede Hilfe im Vorraus und schonmal einen guten Start in den Tag :) viel Grüße Lars |
Re: Outlook Bilder auslesen
Hallo Lars,
versuch mal folgenden Code:
Delphi-Quellcode:
Gruß Dale
var aContactItem : OleVariant;
... for i := 1 to Contacts.Items.Count do aContactItem := Contacts.Item(i) aContactItem.Attachments.Add('c:\IrgendeineDatei.txt', olByValue, 10000, 'Ein Name für den Anhang'); aContactItem.Save; end; |
Re: Outlook Bilder auslesen
Hi Dale,
ich glaube das was dein Code macht ist ein neues Attachment hinzufügen und das ist ja genau das Gegenteil von dem was ich machen will ... aber vielleicht ist der Trick das Bild als Attachment an den Contact-Datensatz zu betrachten, damit werde ich mal rumprobieren und bescheidgeben, wenn ich was brauchbares gefunden habe oder verzweifelt bin. Wenn bis dahin allerdings schon jemand ne gute Idee hat bin ich dafür natürlich dankbar :). Lg Lars |
Re: Outlook Bilder auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Lars,
du kannst das Erzeugen und Initialisieren deines Objektes zusammenfassen - mit einem speziellen Konstruktor oder so:
Delphi-Quellcode:
Aber das nur nebenbei.
function CreateMMOutlookContact(contact: OleVariant): TMMOutlookContact;
begin Result := TMMOutlookContact.Create; with contact as ContactItem do begin Result.FNachname := Lastname; Result.FVorname := FirstName; Result.FWeitererVorname := MiddleName; end; end; Zitat:
Grüße vom marabu |
Re: Outlook Bilder auslesen
du hast natürlich vollkommen recht, ich Dusel!
Folgender Code ist dann wohl besser:
Delphi-Quellcode:
Gruß Dale
var lNameSpace : NameSpace;
lFolder : MAPIFolder; lItemColl : Items; i, j : Integer; lElement : OleVariant; lContact : ContactItem; begin OutlookApplication1.Connect; lNameSpace := OutlookApplication1.GetNamespace('MAPI'); lFolder := lNamespace.PickFolder; lItemColl := lFolder.Items; IF lItemColl.Count > 0 THEN BEGIN FOR i := 1 to lItemColl.Count do BEGIN // Anlagen speichern IF (lElement.Attachments.Count > 0) THEN BEGIN FOR j:= 1 to lElement.Attachments.Count DO lElement.Attachments.Item(j).SaveAsFile( Format('c:\Anlagen\%s', [lElement.Attachments.Item(j).FileName])); END; END; END; OutlookApplication1.Disconnect; end; |
Re: Outlook Bilder auslesen
jeppa auf so einen Code bin ich jetzt auch gekommen :). Allerdings rechne ich halt damit, dass nur ein Bild an einem Contact dran hängt ... und es funktioniert *lufspring*
dankö |
Re: Outlook Bilder auslesen
hm ich hätte jetzt doch noch eine Frage:
Fernziel hier ist eine Synkronisation mit Outlook (weil das so den Weg auf alle möglichen MDAs etc. darstellt), dabei währe es sehr günstig eine Art ID für die Datensätze zu haben, hat dieser OleVariant Datentyp irgendeine Property, die einen Datensatz in Outlook eindeutig identifiziert? Damit Änderungen in Outlook von meiner Applikation bemerkt und in die Datenbank übernommen werden können. Naja und dann würde mich mal so generell interessieren ob es irgendwo eine List gibt auf der _alle_ Properties von diesem Outlook-Contact drauf stehen. Habe jetzt schon so eine 30-40 Punkte lange Liste, allerdings ist das ja garantiert noch nicht alles (da kann man ja schon alleine 15 verschiedene Telefonnummern oder so speichern). Danke im Voraus Lg Lars |
Re: Outlook Bilder auslesen
|
Re: Outlook Bilder auslesen
*dau*
okidoki da stehen ja einige Dinge wie "EntryID" oder so drin, damit sollte ich ja was gebacken bekommen .... dankööö |
Re: Outlook Bilder auslesen
k ich glaube die EntryID ist genau das was ich gesucht habe .... Danke nochmal :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz