Hi Leute
ich verwende
Outlook API Outlook 2003, Windows Server 2003, MS Active Directory auf Win2003, MS Office 2003, VS 2008 mein useraccount ist dom-admin
Ich habe im Öffentlichen Ordner ein Adressbuch namens "ebms" angelegt.
Der Pfad zu dem Adressbuch ist in einer lokalen Variable gespeichert
private Outlook.MAPIFolder ebmsFolder
"\\Öffentliche Ordner\Alle Öffentlichen Ordner\Adresslisten\ebms"
In einer foreach in der Personendatensätze aus einer Datenbank durchlaufen werden erzeuge ich ein Kontaktitem
Outlook.ContactItem contact = (Outlook.ContactItem)new Outlook.Application().CreateItem(Outlook.OlItemType.olContactItem);
Weise diesem ein paar Daten zu
contact.FirstName = firstname;
contact.LastName = lastname;
contact.BusinessAddressStreet = address;
contact.BusinessAddressCity = city;
contact.BusinessAddressState = state;
contact.BusinessAddressPostalCode = postal_code;
contact.BusinessFaxNumber = main_fax;
contact.BusinessTelephoneNumber = pers_phone;
contact.CompanyName = company;
if (email_address != String.Empty)
{
contact.Email1Address = email_address;
contact.Email1DisplayName = firstname + " " + lastname;
}
contact.CompanyMainTelephoneNumber = main_phone;
contact.NickName = nickname;
contact.MobileTelephoneNumber = mobile;
switch (prefix)
{
case "Frau":
contact.Gender = Microsoft.Office.Interop.Outlook.OlGender.olFemale;
break;
case "Herrn":
contact.Gender = Microsoft.Office.Interop.Outlook.OlGender.olMale;
break;
default:
contact.Gender = Microsoft.Office.Interop.Outlook.OlGender.olUnspecified;
break;
}
Und im anschluss speichern.
contact.Save();
Das Kontaktitem liegt nun in meinem lokalen/primären adressbuch.
Wenn ich dieses jetzt in den public folder haben möchte mache ich
contact.Move(ebmsFolder);
Grundsätzlich werden alle Kontakte lokal bei mir im Adressbuch gespeichert.
Allerdings tritt ab einer bestimmten Anzahl von move-befehlen eine exception auf.
Wenn ich das programm direkt danach nochmal starte tritt die exception gleich am anfang auf.
Es sie quasi so aus als könnte der exchange server nur eine bestimmte anzahl an kontakten pro zeit (minuten) speichern.
Wenn ich das ganze über Outlook per drag and drop mache kommt kein fehler sondern alle kontakte werden schön sauber verschoben.
Wenn ich einige Zeit warte und das Programm nochmals ausführe werden wieder viele kontakte gespeichert und irgendwann knallts.
Die Methode saveas liefert das selbe ergebnis wie save und move.
Die Exception:
Ein Client-Vorgang ist fehlgeschlagen.
Microsoft Office Outlook
bei Microsoft.Office.Interop.Outlook._ContactItem.Move(MAPIFolder DestFldr)
bei OutlookAPI.Form1.btnOkay_Click(Object sender, EventArgs e) in C:\Dokumente und Einstellungen\steven.spyrka\Desktop\Develop\projects\OutlookAPI\OutlookAPI\Form1.cs:Zeile 166.
Nicht öffentliche Member
ExceptionMethod: {System.Object Move(Microsoft.Office.Interop.Outlook.MAPIFolder)}
HRESULT -1697628155
Brauche dringend hilfe! Schonmal danke im Voraus 😃
Hallo NGZero,
Öffentliche Ordner wird es in der Exchange Version nach Exchanhge Server 2007 nicht mehr geben. Microsoft hat das Konzept der Öffentlichen Ordner aufgegeben. Es ist deshalb nicht unbedingt sinnvoll, neue Projekte auf öffentlichen Ordnern aufzubauen. Du solltest sowas lieber mit SharePoint machen. Das ist die Zukunft für Zusammenarbeits-Portale etc.
Falls Du aber per Vorgabe an Öffentliche Ordner gebunden bist, kann ich Dir empfehlen, nicht die Outlook-API, sondern Redemption zu verwenden. Das läuft im Welten stabiler. http://www.dimastr.com/redemption/
Hey Rainbird,
vielen Dank für deine Antwort und die Bestätigung das die Outlook Interop nicht gerade sehr stabil ist 😃
Werde mir mal Redemption anschauen aber es kann wirklich gut sein das alles total sinnlos ist wenn später gar keine öffentlichen Ordner Struktur mehr existieren wird.