Benutzer mit den meisten Antworten
ItemAdd Event der Outbox + MeetingItem.Send

Frage
-
Hallo zusammen,
ich habe ein kleines Problem und bitte um Hilfe. Hier die Facts:
- Outlook 2013, Visual Studio 2013, Outlook 2013 AddIn-Projekt, Ziel-Framework 4.5
- Exchange-Postfach 'EX' eingebunden plus einige POP3-Konten (POP3-Konten nutzen Posteingang von Postfach 'EX')
Hier nun das Problem:
Bei der Erstellung einer Besprechung (manuell) geschieht alles so wie es soll: per Klick auf "Senden" werden alle Empfänger benachrichtigt, der Termin wird eingetragen - also alles perfekt.
Wenn ich allerdings mit Visual Studio das ItemAdd-Event der Outbox abfange (eigentlich nur um MailItems zu modifizieren), wird zwar nichts am Item verändert, aber der EventHandler wird natürlich trotzdem kurz durchlaufen - für alle Item-Arten. Folge davon ist, auch MeetingItems werden vom EventHandler behandelt (ohne Veränderung des Items) und bleiben danach aber im Postausgang hängen und werden nicht verschickt.
Dies ist das 1. und eigentliche Problem.
Das 2. Problem folgt: ich habe den EventHandler angepasst und auf ein MeetingItem geprüft. Wenn ein solches vorliegt, dann will ich dieses explizit senden. Dies funktioniert allerdings nicht. Der Termin wird in meinem persönlichen Exchange-Konto eingetragen und ich werde an den Termin auch erinnert. Es wird allerdings keine Einladung gesendet und das Item verbleibt im Postausgang.
(Ich habe wildeste Umformulierungen des Quellcodes versucht, auch mit Zugriff auf das AppointmentItem im MeetingItem, auch dort funktioniert Send() nicht. Auch habe ich den Umweg über Display() versucht, um ein nochmaliges Senden manuell zu erzwingen. Dann lande ich allerdings in einer Endlosschleife, weil das MeetingItem beim Anzeigen aus dem Postausgang gelöscht wird und beim Klicken auf "Senden" wieder im Postausgang landet, was den Prozess von vorne beginnen lässt.)
Was mir allerdings auch aufgefallen ist: ich kann die Eigenschaft des AppointmentItems "SaveSentMessageFolder" weder auslesen noch setzen. Es erscheint beim Debuggen ein Laufzeitfehler "Ein Aufrufziel hat eine Ausnahme verursacht". Liegt es daran? Wie kann ich den Fehler beheben? Gibt es eine andere Möglichkeit, trotz Abfangen des ItemAdd-Events alle anderen Item-Arten außer MailItems einfach zu ignorieren?
Ich bin ratlos und brauche dringend Unterstützung!
Danke schon einmal!!!
VG Markus
Private Sub StartOutboxAgent() If My.Settings.UseOutboxAgent Then Dim outbox As Outlook.Folder = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderOutbox) outboxItems = outbox.Items AddHandler outboxItems.ItemAdd, AddressOf OutboxItemAddHandler End If End Sub Private Sub OutboxItemAddHandler(Item As Object) Try CheckIfModifyItem(Item) Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try End Sub Private Sub CheckIfModifyItem(Item As Object) Dim mail As Outlook.MailItem = TryCast(Item, Outlook.MailItem) If Not IsNothing(mail) Then 'hier steht Code zum Verändern einer Mail... Else SendNonMailItem(Item) End If End Sub Private Sub SendNonMailItem(item As Object) Dim meetingItem As Outlook.MeetingItem = TryCast(item, Outlook.MeetingItem) If meetingItem IsNot Nothing Then meetingItem.Recipients.ResolveAll() meetingItem.Save() meetingItem.Send() Marshal.ReleaseComObject(meetingItem) End If End Sub
Antworten
-
Hallo Spammmie,
Hast Du mit SyncObject() probiert? Siehe folgende Diskussion:
MailItem.Display and ItemAdd eventVerwendest Du SendAndReceive()? Diese Funktion darf nicht während ItemSend() aufgerufen werden:
Mail stuck in outbox in outlook 2007Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Als Antwort vorgeschlagen Aleksander Chalabashiev Montag, 29. Dezember 2014 10:10
- Als Antwort markiert Aleksander Chalabashiev Montag, 5. Januar 2015 08:20