2016年3月25日金曜日

Outlook addin で予定が消える!?

提供しているソフトウェアで、Outlookの予定表が消える!という問題が発生して調査しました。

手順は、こんなかんじ。
1)会議予定を作成して、参加者に会議開催通知をメールします。
2)予定をクリックして「会議のキャンセル」を選びます。(キャンセルメールが開きます)
3)AddinのItemSendイベント処理での会話結果から、Cancel=true;を設定してメールの送信を中止します。
4)キャンセルメールの右上「×」ボタンでメールを閉じます。
会議の予定が消えてなくなります。

新規にアドインを作成して
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{ //ここを追加(1行)
  Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(onItemSend);
}

//以下を追加(12行。送信ボタン押下処理)
private void onItemSend(object Item, ref bool Cancel)
{
  Outlook.MeetingItem meetItem = Item as Outlook.MeetingItem;
  if(meetItem != null)
  {
    if (meetItem.MessageClass == "IPM.Schedule.Meeting.Canceled")
    {
      Cancel = true; // 会議開催通知をキャンセル
      return;
    }
  }
}
こんだけ書くだけで再現できました。
キャンセルの送信をキャンセルしているだけですね。

会議の主催者側のスケジュールが消えてしまい、受信者からは消せなくなってしまってとても不便な状態に陥ります。

・・・対策はいまのところ取れていません。
(会議キャンセルの ItemSend は無条件に送信するように、という対応しか取れませんね)


ちなみに。
通常のメールにエクセルのファイルを添付して、その状態で添付ファイルをダブルクリックして開いた状態でメールを送信すると、『ファイルが開かれているぞ!「はい」「いいえ」』という会話のメッセージボックスが出るんですが。
会議キャンセル通知のメールにエクセルファイルを添付して、ダブルクリックで開いた状態で送信すると、似たようなメッセージは表示されるものの、「いいえ」ボタンが表示されませんので必ず送信されます。(送信すると会議の予定は当然消えます)

こ子の動きから察するに、MSさんも勝手に消えてしまうことを把握していて無視してるんだな、と思えます。

かんべんしてくれーw

0 件のコメント:

コメントを投稿