2017-07-28 34 views
0

Ich habe ein Outlook-Add-in, in dem ich versuche, auf Empfänger der Termineinladung zuzugreifen. Obwohl die Empfängerspalte null ist, gibt der Code Outlook.AppointmentItem.Recipients.Count 1 zurück, und Recipients gibt die E-Mail des Absenders zurück.Recipients.Count in VB funktioniert nicht

Dim recips As Outlook.Recipients 
Dim recip As Outlook.Recipient 
Dim flag As Boolean = False 

cal = Application.ActiveInspector().CurrentItem 
recips = cal.Recipients 
cal.Save() 
MessageBox.Show(recips.Count) 
For Each recip In recips 
    MessageBox.Show(recip.Address) 
Next 

Kann jemand vorschlagen, warum dies geschieht?

Antwort

0

Sie können die Methode GetAssociatedAppointment verwenden, die ein Objekt AppointmentItem zurückgibt, das den Termin darstellt, der mit der Besprechungsanfrage verknüpft ist. Dann können Sie die folgenden Eigenschaften verwenden:

  • RequiredAttendees - gibt ein Semikolon getrennte String der erforderlichen Teilnehmernamen für den Besprechungstermin.
  • OptionalAttendees - gibt einen String zurück oder legt diesen fest, der die Anzeigezeichenfolge der optionalen Teilnehmernamen für den Termin darstellt.

Und natürlich die Recipients Eigenschaft der AppointmentItem-Klasse.

0

Dies ist von Entwurf - der Termin-Organizer befindet sich immer in der Empfängertabelle. Sie können herausfinden, wer der Veranstalter ist, indem Sie die PR_RECIPIENT_FLAGS Eigenschaft (DALS-Name http://schemas.microsoft.com/mapi/proptag/0x5FFD0003) mit Recipient.PropertyAccessor.GetProperty betrachten. Der Organisator wird recipOrganizer (= 2) Bit gesetzt haben.

+0

Ich schwöre, ich fand vor kurzem eine Situation, wo Recipients.Count war 0 für Outlook 2013, aber 1 für 2016. Ich musste absichtlich Code, um dies unterzubringen –

+0

Ja, ältere Versionen von Outlook hatte keine Empfänger und keine globale Termin-ID bis Der Termin wird gespeichert. Outlook 2016 fügt den Organizer als Empfänger hinzu, sobald Save aufgerufen wird. –