2016-12-13 7 views
0

У меня возникла проблема с событием «Отправить» в AppointmentItem библиотеки Outlook.Интеграция Outlook - событие отправки встречи

Всякий раз, когда я пытаюсь присвоить какой-либо метод или действие событию «Отправить», возникает следующая ошибка. Может кто-нибудь объяснить это мне или помочь мне?

Я знаю, что там должно быть событие отправки: https://msdn.microsoft.com/en-us/library/office/ff865990.aspx

error in Visual Studio

Это мой код:

private void btnOutlookCalendar_Click(object sender, RoutedEventArgs e) 
    { 
     System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("OUTLOOK"); 
     Outlook.Application outlookApp; 
     int collCount = processes.Length; 

     if (collCount != 0) 

     { 

      // Outlook already running, hook into the Outlook instance 
      outlookApp = Marshal.GetActiveObject("Outlook.Application") as Microsoft.Office.Interop.Outlook.Application; 

     } 
     else 
     { 
      outlookApp = new Microsoft.Office.Interop.Outlook.Application(); //neues Outlook Objekt erzeugen 
     } 

     Outlook.AppointmentItem oAppointment; 

     oAppointment = (Outlook.AppointmentItem)outlookApp.CreateItem(Outlook.OlItemType.olAppointmentItem); // neuen Kalendereintrag erstellen 

     oAppointment.Subject = this.dtoEvent.Bezeichnung; // set the subject 
     oAppointment.Body = "Automatisch durch das X erstelltes Event\n\n" 
      + this.dtoEvent.Beschreibung + "\nWeitere Informationen:\n" 
      + "X" + this.dtoEvent.ID; 
     oAppointment.Location = this.dtoEvent.Ort + ", " + this.dtoEvent.Strasse; // set the location 

     oAppointment.Start = Convert.ToDateTime(this.dtoEvent.Datum_Von + " " + this.dtoEvent.Uhrzeit_Von); // Set the start date 
     oAppointment.End = Convert.ToDateTime(this.dtoEvent.Datum_Bis + " " + this.dtoEvent.Uhrzeit_Bis); // End date    

     oAppointment.ReminderSet = true; // Set the reminder 
     oAppointment.ReminderMinutesBeforeStart = 15; // reminder time 
     oAppointment.Importance = Outlook.OlImportance.olImportanceHigh; // appointment importance 
     oAppointment.BusyStatus = Outlook.OlBusyStatus.olBusy; 

     this.oAppointment = oAppointment; 

     oAppointment.Display(true); 

     oAppointment.Send += _appointment_Send; 

    } 



    private void _appointment_Send(ref bool Cancel) 
    { 
     if (MessageBox.Show("Wollen Sie die Veranstaltung per E-Mail verschicken?", "Frage", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) 
     { 
      Outlook.MailItem mailItem = ((Outlook.AppointmentItem)oAppointment).ForwardAsVcal(); 

      mailItem.Body = "X"; 

      mailItem.Display(); 


     } 
    } 

ответ

1

Если вы посмотрите на предупреждающее сообщение, вы можете увидеть следующее :

Предупреждение 1 Неоднозначность между методами «Microsoft.Office.Interop .Outlook._MailItem.Send() 'и не-метод' Microsoft.Office.Interop.Outlook.ItemEvents_10_Event.Send '. Использование группы методов.

Таким образом, чтобы избежать таких ошибок или предупреждений можно привести объект почтового отправления к интерфейсу Microsoft.Office.Interop.Outlook.ItemEvents_10_Event:

(mail as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Send += AddinModule_Send; 

Если вы хотите использовать метод Send вам нужно преобразовать объект элемента к _MailItem класс вместо.

+0

Большое вам спасибо за помощь! Это сработало! Но, к сожалению, сейчас у меня другая проблема. Моя программа вылетает, если я подключаю событие «AfterWrite» и когда пытаюсь отправить сохраненную встречу в качестве вложения. (см. метод _appointment_send()). Проблема в том, что даже при срабатывании события AfterWrite окно Outlook встречи все еще открыто, и из-за этого я думаю, что не могу получить доступ к сохраненной встрече. – Maximus1809