EWS使用原始组织者创建活动

时间:2017-01-18 19:12:00

标签: exchange-server exchangewebservices mime

我们正在尝试使用EWS创建事件,EWS是迁移代码的一部分。有一个众所周知的问题,我们不能设置事件的组织者,这是一个原始的场景;

  1. 用户A正在迁移到用户B
  2. 用户A在日历中有30个事件
  3. 在这30个中,它有20个邀请活动,其中A是与会者,10个活动由用户A创建(即用户A是组织者)
  4. 当我们迁移它们时,使用下面的代码,所有事件都是以用户A作为管理器创建的。哪个是真正的问题

    约会预约=新约会(exchangeSevice);

    appointment.MimeContent = new MimeContent("UTF-8", System.IO.File.ReadAllBytes(@"c:\A\test.mime"));
    //appointment.MimeContent = ; 
    // Set the properties on the appointment object to create the appointment.
    appointment.Subject = "Tennis lesson with invite 22222";
    appointment.Body = "Focus on backhand this week.";
    appointment.Start = DateTime.Now.AddDays(2);
    appointment.End = appointment.Start.AddHours(1);
    appointment.Location = "Tennis club";
    appointment.ReminderDueBy = DateTime.Now;
    
    Attendee attendee = new Attendee("test@user.com");
    appointment.RequiredAttendees.Add(attendee);
    
    Mailbox mailbox = new Mailbox();
    mailbox.Address = "student@test.com";
    
    // Save the appointment to your calendar.
    appointment.Save(new FolderId(WellKnownFolderName.Calendar, mailbox), SendInvitationsMode.SendToAllAndSaveCopy);
    
    // Verify that the appointment was created by using the appointment's item ID.
    Item item = Item.Bind(exchangeSevice, appointment.Id, new PropertySet(ItemSchema.Subject));
    
  5. 问题由Microsoft解释;

    https://blogs.msdn.microsoft.com/webdav_101/2011/09/28/howto-set-the-organizer-of-a-meeting-on-the-calendar-of-an-attendee-using-ews/

    我不确定这一段到底想说的是什么;

    如果您决定使用MIME创建会议,请让MIME / VCALENDAR内容使用METHOD:PUBLISH而不是REQUEST。这个问题是需要设置其他属性。没有关于所有需要设置的内容的文档或建议,或者方法是否适用于所有情况。此外,您可能暂时可以使其正常工作,但在将来的Exchange更新中可能无法正常工作。

    任何人都可以帮助我如何实现我对不同组织者创建活动的要求?我有机会这样做吗?

2 个答案:

答案 0 :(得分:0)

您正在做的不是迁移约会,而是创建新约会。

财产"组织者"是只读的,无法更改,因此您不会以这种方式成功。

我尝试的是从用户A获取约会的组织者,冒充他们(或使用代理访问权限)并向用户B发送邀请。

冒充假冒其他用户:https://msdn.microsoft.com/en-us/library/office/dd633680(v=exchg.80).aspx

热门获取代理权限:https://msdn.microsoft.com/en-us/library/office/dn641957(v=exchg.150).aspx

答案 1 :(得分:0)

我在想什么。但在这种情况下,客户表达的唯一恐惧是邀请将在其收件箱中蓬勃发展。因此,假设今天是2017年1月20日,并且有一个事件是1月15日 2015 ,这是一个返回日期。在那种情况下,我不能发送邀请。

另外,另一个问题是没有必要只邀请内部员工。也可能有外部人员开始收到邀请邮件。如果你明白我的意思。所以这个解决方案无法工作。

我希望是否有任何方法可以编程方式创建MeetingRequest,而TOO是不可能的,但是如果我可以创建一个MeetRequest项目的MIME并将其保存在收件箱中。因为我注意到如果我得到活动邀请,那就会显示在日历中。显然,我们无法复制状态,无论用户是否接受,但至少这可以是一个解决方案。有什么建议吗?