Как добавить новое приглашение на собрание в календарь Outlook с помощью взаимодействия? - PullRequest
4 голосов
/ 09 февраля 2012

Хорошо, я пытаюсь подключиться к общему календарю Outlook в C # с помощью Interop и добавить новый запрос на собрание.

Вот что я получил, начиная с моих операторов использования (этоФорма Windows):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Windows.Forms;
using Outlook = Microsoft.Office.Interop.Outlook;

Затем у меня есть общедоступный класс "Встречи", который ниже:

public class Appointments
{
    public string ConversationTopic { get; set; }
    public int Duration { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime EndTime { get; set; }
    public string Organizer { get; set; }
    public int ReminderMinutesBeforeStart { get; set; }
    public string RequiredAttendees { get; set; }
    public string Subject { get; set; }
    public string Body { get; set; }
}

У меня есть новая пустая форма окна с представлением таблицы данных, которое в данный момент называетсяdataGridView1.Код события загрузки формы приведен ниже:

private void Form1_Load(object sender, EventArgs e)
{
    Outlook.Application oApp;
    oApp = new Outlook.Application();
    Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
    oNS.Logon(Missing.Value, Missing.Value, true, true);

    Outlook.Recipient oRecip = (Outlook.Recipient)oNS.CreateRecipient("Foo bar");
    Outlook.MAPIFolder oFolder = (Outlook.MAPIFolder) oNS.GetSharedDefaultFolder(oRecip, Outlook.OlDefaultFolders.olFolderCalendar);

    List<Appointments> appointmentList = new List<Appointments>();

    foreach (object item in oFolder.Items)
    {
        Outlook.AppointmentItem thisOne = (Outlook.AppointmentItem)item;
        appointmentList.Add(new Appointments { ConversationTopic = thisOne.ConversationTopic, Duration = thisOne.Duration, EndTime = thisOne.End, Organizer = thisOne.Organizer, ReminderMinutesBeforeStart = thisOne.ReminderMinutesBeforeStart, RequiredAttendees = thisOne.RequiredAttendees, StartTime = thisOne.Start, Subject = thisOne.Subject, Body = thisOne.Body });
    }

    dataGridView1.AutoGenerateColumns = true;
    dataGridView1.DataSource = appointmentList;
    dataGridView1.Sort(dataGridView1.Columns["Subject"], ListSortDirection.Descending);
}

. Это работает безупречно при подключении к моему календарю и заполнении моего представления сетки данных всей моей соответствующей информацией календаря.Теперь я хочу программно отправить новый запрос на собрание в календарь.

Я предполагаю, что запрос на собрание - это oFolder.Item, поэтому я хочу набрать:

oFolder.Items.Add(* details here *);

Внутрив скобках intellisense просто говорится следующее:

dynamic_Items.Add ([object Type = Type.Missing])

Теперь я в тупике, и помощь будет оченьоценил.

Спасибо

1 Ответ

10 голосов
/ 09 февраля 2012
using Outlook = Microsoft.Office.Interop.Outlook;    

private void SetRecipientTypeForAppt()
    {
        Outlook.AppointmentItem appt =
            Application.CreateItem(
            Outlook.OlItemType.olAppointmentItem)
            as Outlook.AppointmentItem;
        appt.Subject = "Customer Review";
        appt.MeetingStatus = Outlook.OlMeetingStatus.olMeeting;
        appt.Location = "36/2021";
        appt.Start = DateTime.Parse("10/20/2006 10:00 AM");
        appt.End = DateTime.Parse("10/20/2006 11:00 AM");
        Outlook.Recipient recipRequired =
            appt.Recipients.Add("Ryan Gregg");
        recipRequired.Type =
            (int)Outlook.OlMeetingRecipientType.olRequired;
        Outlook.Recipient recipOptional =
            appt.Recipients.Add("Peter Allenspach");
        recipOptional.Type =
            (int)Outlook.OlMeetingRecipientType.olOptional;
        Outlook.Recipient recipConf =
           appt.Recipients.Add("Conf Room 36/2021 (14) AV");
        recipConf.Type =
            (int)Outlook.OlMeetingRecipientType.olResource;
        appt.Recipients.ResolveAll();
        appt.Display(false);
    }

через Как: Создать приглашение на собрание, добавить получателей и указать местоположение

...