2017-06-29 3 views
0

Je travaille sur mon plugin et face au prochain problème: il semble que MeetingItems fonctionne différemment, puis MailItems.VSTO Outlook envoyer MeetingItem de Brouillons

Ce que je dois faire:

  1. Enregistrer MeetingItem aux courants d'air avant qu'il ne soit envoyé.
  2. Ajouter une pièce jointe.
  3. Envoyez-le.

1 Pour enregistrer MeetingItem aux courants d'air:

(Item as MeetingItem).GetAssociatedAppointment(false).GetInspector.Close(OlInspectorClose.olSave); 

Il fonctionne.

2. Ajouter une pièce jointe.

Attaches = (Item as MeetingItem).GetAssociatedAppointment(false).Attachments; 
Attaches.Add(...). 

Cela fonctionne également.

3. Envoyer un courrier électronique.

Try1:

(Item as MeetingItem).Send(); << it doesn't work. 

Try2:

AppointmentItem appItem = Item.GetAssociatedAppointment(false); 
appItem.Send(); << It works. But MeetingItem is still in drafts folder (???) 
Item.Delete(); << Moved to deleted folder, and can't delete permanently. 

Il pense au 3ème étape que je fais quelque chose de mal. Savez-vous comment envoyer MeetingItem correctement?

Mise à jour:

Lorsque j'envoie MeetingItem, Outlook me demande "Est-ce que vous souhaitez mettre à jour votre agenda dès maintenant". Si j'appuie sur yes, alors le callback Application_ItemSend n'est pas du tout appelé, donc je ne peux pas ajouter ma pièce jointe. Je suis confus ce qui se passe là-bas.

Outlook message box

Mise à jour 2:

Il semble que quand j'ajoute l'attachement déjà des messages entrants, alors je devrais utiliser

(Item as MailItem).Attachments.Add(...) 

mais quand je suis l'envoi du courrier, je utiliser

(Item as MailItem).GetAssociatedAppointment(false).Attachments.Add(...) 

Il est déroutant.

Répondre

0

Les éléments de la réunion ne sont pas conçus pour être enregistrés ou manipulés par les utilisateurs: ils sont créés automatiquement lorsqu'un rendez-vous est envoyé. Vous devez vraiment ajouter des pièces jointes au rendez-vous lui-même. Si vous n'en voulez toujours que sur l'élément de réunion, vous pouvez traiter l'événement Application.ItemSend et ajouter les pièces jointes à l'objet MeetingItem transmis à votre gestionnaire d'événements.

0

Il n'est pas nécessaire d'utiliser la méthode GetAssociatedAppointment de la classe MeetingItem. Vous pouvez obtenir directement une instance de la classe Inspector en appelant la propriété GetInspector de la classe MeetingItem. La même règle est applicable à d'autres propriétés et méthodes que vous devez appeler - Send, etc. Attachments et

Lorsque vous créez une demande de réunion par programme, vous devez d'abord créer un objet AppointmentItem au lieu d'un objet MeetingItem. Pour indiquer que le rendez-vous est une réunion, définissez la propriété MeetingStatus de l'objet AppointmentItem sur olMeeting. Pour envoyer la demande de réunion, appliquez la méthode Send à cet objet AppointmentItem.