2017-06-29 27 views
0

私は自分のプラグインで作業していて、次の問題に直面しました。MeetingItemsは、MailItemsとは異なって動作します。私がする必要がどのようなVSTO OutlookはDraftsからMeetingItemを送信します

  1. 保存MeetingItem、それが送信される前に、ドラフトへ。
  2. 添付ファイルを追加します。
  3. 送信します。

1草稿にMeetingItemを保存するには:

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

それは動作します。

2.添付ファイルを追加します。

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

も同様です。

3.メールを送信します。

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. 

それは私が何か間違ったことをやっている第三段階に思います。 MeetingItemを正しく送信する方法を知っていますか?

更新:

私はMeetingItemを送信すると、Outlookは、「あなたが今、あなた自身のカレンダーを更新したいと思います」私に尋ねます。はいを押すと、Application_ItemSendコールバックがまったく呼び出されないため、添付ファイルを追加できません。私はそこで何が起こっているのか混乱しています。

Outlook message box

アップデート2:

私がすでに受信したメッセージを添付ファイルを追加するとき、私は

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

を使用する必要があることを、表示されますが、私はメールを送信していたときに、私がすべき使用

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

それは混乱しています。

答えて

0

会議アイテムは、ユーザーが保存または操作するようには設計されていません。会議アイテムは、予定の送信時に自動的に作成されます。あなたは本当にアポイント自体に添付ファイルを追加する必要があります。それでも会議アイテムにのみ必要な場合は、Application.ItemSendイベントを処理し、添付ファイルをイベントハンドラに渡されたMeetingItemオブジェクトに追加できます。

0

MeetingItemクラスのGetAssociatedAppointmentメソッドを使用する必要はありません。 MeetingItemクラスのGetInspectorプロパティを呼び出すと、Inspectorクラスのインスタンスを直接取得できます。同じルールは、あなたが呼び出す必要があり、他のプロパティとメソッドに適用される - SendAttachments

あなたがプログラムで会議出席依頼を作成するときに、あなたが最初にAppointmentItemオブジェクトの代わりに、MeetingItemオブジェクトを作成します。予定が会議であることを示すには、AppointmentItemオブジェクトのMeetingStatusプロパティをolMeetingに設定します。会議出席依頼を送信するには、そのAppointmentItemオブジェクトにSendメソッドを適用します。