【问题标题】:EWS - Attachment Not Sent With InvitationEWS - 未随邀请发送的附件
【发布时间】:2012-07-10 16:54:29
【问题描述】:

我在使用 EWS 托管 API 发送带有邀请的附件时遇到问题。约会与会者没有收到添加到约会中的任何附件,但 附件确实出现在创建约会的人的日历中。

这是我的代码 sn-p:

try
{
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
    service.Credentials = new WebCredentials("calendar_user", "password1", "acme");
    service.Url = new Uri("https://acme.com/EWS/Exchange.asmx");

    Appointment appointment = new Appointment(service);
    service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "tin.tin@acme.com");

    String UID = "D09F3FF6-1461-414C-89E8-C05BC3B66A4A";
    appointment.ICalUid = UID;
    appointment.Subject = "Test Subject";
    appointment.Body = "Test Content.";
    appointment.Start = new DateTime(2012, 07, 11, 17, 00, 0);
    appointment.End = appointment.Start.AddMinutes(30);

    FileAttachment attachment = appointment.Attachments.AddFileAttachment(@"C:\Users\tintin\Documents\Test.xlsx");
    attachment.IsInline = false;

    appointment.RequiredAttendees.Add("tin.tin@acme.com");

    appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);
}
catch (Exception ex)
{

}

【问题讨论】:

    标签: exchangewebservices ews-managed-api appointment


    【解决方案1】:

    看起来 EWS 在附件处理方面存在可怕的限制。我找到了解决此问题的解决方法,该问题需要更新约会对象两次。

    appointment.ICalUid = UID;
    appointment.Subject = "Test Subject";
    appointment.Body = "Test Content.";
    appointment.Start = new DateTime(2012, 07, 11, 17, 00, 0);
    appointment.End = appointment.Start.AddMinutes(30);
    
    FileAttachment attachment = appointment.Attachments.AddFileAttachment(@"C:\Users\tintin\Documents\Test.xlsx");
    attachment.IsInline = false;
    
    appointment.Save(folderCalendar, SendInvitationsMode.SendToNone);
    appointment.RequiredAttendees.Add("tin.tin@acme.com");
    
    appointment.Update(ConflictResolutionMode.AutoResolve, SendInvitationsOrCancellationsMode.SendToAllAndSaveCopy);
    

    【讨论】:

      【解决方案2】:

      看起来这个问题是 Exchange Server 2010 Service Pack 1 特有的。我遇到了类似的问题,当我将版本更改为 SP2 时,问题得到了解决。下面的代码解决了问题

      ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
      

      【讨论】:

        【解决方案3】:

        第二次更新成功了,但它会导致底部的会议被取消。不能在产品中使用。 将版本更改为 SP2 不起作用。

        仍在寻找更好的解决方案。

        【讨论】:

          【解决方案4】:

          是的,EWS 有一些问题,在使用新附件更新会议时,它不是第一次更新。需要 2 个实例来更新它。

          Microsoft.Exchange.WebServices.Data.Appointment meet1 = await 
          Microsoft.Exchange.WebServices.Data.Appointment.Bind(service, strMessageID);
                                          meet1.Attachments.Clear();
                                          foreach (FileUpload Item in 
          objCreateEvent.strAttachmentUploadPath)
                                          {
                                              meet1.Attachments.AddFileAttachment(Item.fileName, 
          Item.filePath);
                                          }
                                          meet1.RequiredAttendees.Clear();
                                          foreach (string ToItem in objToIds)
                                          {
                                              meet1.RequiredAttendees.Add(ToItem);
                                          }
                                          await 
          meet1.Update(ConflictResolutionMode.AlwaysOverwrite, 
          SendInvitationsOrCancellationsMode.SendToAllAndSaveCopy);
                                          Microsoft.Exchange.WebServices.Data.Appointment 
          meeting2 = await Microsoft.Exchange.WebServices.Data.Appointment.Bind(service, 
          strMessageID);
                                          meeting2.Attachments.Clear();
                                          foreach (FileUpload Item in 
          objCreateEvent.strAttachmentUploadPath)
                                          {
                                              
          meeting2.Attachments.AddFileAttachment(Item.fileName, Item.filePath);
                                          }
                                          meeting2.RequiredAttendees.Clear();
                                          foreach (string ToItem in objToIds)
                                          {
                                              meeting2.RequiredAttendees.Add(ToItem);
                                          }
                                          await 
          meeting2.Update(ConflictResolutionMode.AlwaysOverwrite, 
          SendInvitationsOrCancellationsMode.SendToAllAndSaveCopy);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-02-12
            • 2020-11-18
            • 1970-01-01
            • 2012-02-17
            • 1970-01-01
            • 2012-12-02
            • 1970-01-01
            相关资源
            最近更新 更多