/// <summary> /// 送信者の情報(Dto)を取得する /// </summary> /// <param name="Item">Outlookアイテムオブジェクト</param> /// <returns>送信者の宛先情報インスタンス(送信者が取得できない場合null)</returns> public static RecipientInformationDto GetSenderInfomation(object Item) { if (Item is Outlook.MailItem) { Outlook.MailItem mail = (Item as Outlook.MailItem); return(GetSenderInformation(mail)); } else if (Item is Outlook.MeetingItem) { Outlook.MeetingItem meeting = Item as Outlook.MeetingItem; return(GetSenderInformation(meeting)); } else if (Item is Outlook.AppointmentItem) { Outlook.AppointmentItem appointment = Item as Outlook.AppointmentItem; return(GetSenderInformation(appointment)); } else if (Item is Outlook.ReportItem) { Outlook.ReportItem report = Item as Outlook.ReportItem; return(GetSenderInformation(report)); } else if (Item is Outlook.SharingItem) { Outlook.SharingItem sharing = Item as Outlook.SharingItem; return(GetSenderInformation(sharing)); } else if (Item is Outlook.TaskItem) { Outlook.TaskItem task = Item as Outlook.TaskItem; return(GetSenderInformation(task)); } else if (Item is Outlook.TaskRequestItem) { Outlook.TaskRequestItem taskRequest = Item as Outlook.TaskRequestItem; return(GetSenderInformation(taskRequest)); } else if (Item is Outlook.TaskRequestAcceptItem) { Outlook.TaskRequestAcceptItem taskRequestAcceptItem = Item as Outlook.TaskRequestAcceptItem; string mailHeader = GetMailHeader(taskRequestAcceptItem.PropertyAccessor); return(GetSenderInformationFromMailHeader(mailHeader)); } else if (Item is Outlook.TaskRequestDeclineItem) { Outlook.TaskRequestDeclineItem taskRequestDeclineItem = Item as Outlook.TaskRequestDeclineItem; string mailHeader = GetMailHeader(taskRequestDeclineItem.PropertyAccessor); return(GetSenderInformationFromMailHeader(mailHeader)); } else { throw new NotSupportedException("未対応のOutook機能です。"); } }
/// <summary> /// ReportItemから、宛先(Recipient)のリスト取得する /// </summary> /// <param name="Item">ReportItemオブジェクト</param> /// <returns>List<Outlook.Recipient></returns> private static List <Outlook.Recipient> GetRecipientList(Outlook.ReportItem item) { //ReportItemのままだと送信先が取れないため、 //いったんIPM.Noteとして別名保存⇒ロードしてからRecipientsを取得する Outlook.ReportItem copiedReport = item.Copy(); copiedReport.MessageClass = "IPM.Note"; copiedReport.Save(); //IPM.Noteとして保存してからロードするとMailItemとして扱えるようになる var newReportItem = Globals.ThisAddIn.Application.Session.GetItemFromID(copiedReport.EntryID); Outlook.MailItem newMailItem = newReportItem as Outlook.MailItem; List <Outlook.Recipient> recipientsList = GetRecipientList(newMailItem); copiedReport.Delete(); return(recipientsList); }
/// <summary> /// ReportItemの送信者情報(Dto)を取得する /// </summary> /// <param name="Item">ReportItemオブジェクト</param> /// <returns>送信者の宛先情報DTO(送信者が取得できない場合null)</returns> private static RecipientInformationDto GetSenderInformation(Outlook.ReportItem item) { RecipientInformationDto senderInformation = new RecipientInformationDto("Microsoft Outlook", Outlook.OlMailRecipientType.olOriginator); return(senderInformation); }
/// <summary> /// アイテムから、宛先(Recipient)のリスト取得する /// </summary> /// <param name="Item">Outlookアイテムオブジェクト</param> /// <param name="type">アイテムの種類</param> /// <param name="IgnoreMeetingResponse">会議招集の返信かどうか</param> /// <returns>Recipientsインスタンス(会議招集の返信や、MailItem,MeetingItem,AppointmentItemでない場合null)</returns> public static List <Outlook.Recipient> GetRecipients(object Item, ref OutlookItemType type, bool IgnoreMeetingResponse = false) { // MailItemの場合 if (Item is Outlook.MailItem) { type = OutlookItemType.Mail; Outlook.MailItem mail = Item as Outlook.MailItem; return(GetRecipientList(mail)); } // MeetingItemの場合 else if (Item is Outlook.MeetingItem) { Outlook.MeetingItem meeting = Item as Outlook.MeetingItem; // 会議招集の返信の場合 // "IPM.Schedule.Meeting.Resp.Neg"; // "IPM.Schedule.Meeting.Resp.Pos"; // "IPM.Schedule.Meeting.Resp.Tent"; if (meeting.MessageClass.Contains("IPM.Schedule.Meeting.Resp.")) { type = OutlookItemType.MeetingResponse; // 会議招集の返信をする場合、宛先確認画面が表示されないようnullを返す if (IgnoreMeetingResponse) { return(null); } else { return(GetRecipientList(meeting)); } } // 会議出席依頼を送信する場合など else { type = OutlookItemType.Meeting; return(GetRecipientList(meeting)); } } // AppointmentItemの場合(編集中/送信されていない状態でトレイにある会議招集メール、開催者が取り消した会議のキャンセル通知(自分承認済み)) else if (Item is Outlook.AppointmentItem) { type = OutlookItemType.Appointment; Outlook.AppointmentItem appointment = Item as Outlook.AppointmentItem; return(GetRecipientList(appointment)); } else if (Item is Outlook.SharingItem) { type = OutlookItemType.Sharing; Outlook.SharingItem sharing = Item as Outlook.SharingItem; return(GetRecipientList(sharing)); } else if (Item is Outlook.ReportItem) { type = OutlookItemType.Report; Outlook.ReportItem report = Item as Outlook.ReportItem; return(GetRecipientList(report)); } else if (Item is Outlook.TaskItem) { return(null); //type = OutlookItemType.Task; //Outlook.TaskItem task = Item as Outlook.TaskItem; //return GetRecipientList(task); } else if (Item is Outlook.TaskRequestItem) { return(null); //type = OutlookItemType.Task; //Outlook.TaskRequestItem taskRequest = Item as Outlook.TaskRequestItem; //return GetRecipientList(taskRequest); } else if (Item is Outlook.TaskRequestAcceptItem) { return(null); //type = OutlookItemType.TaskRequestResponse; //Outlook.TaskRequestAcceptItem taskRequestAccept = Item as Outlook.TaskRequestAcceptItem; //return GetRecipientList(taskRequestAccept); } else if (Item is Outlook.TaskRequestDeclineItem) { return(null); //type = OutlookItemType.TaskRequestResponse; //Outlook.TaskRequestDeclineItem taskRequestDecline = Item as Outlook.TaskRequestDeclineItem; //return GetRecipientList(taskRequestDecline); } throw new NotSupportedException("未対応のOutlook機能です。"); }