如何阻止会议被剥夺(EWS)

How to stop meeting being stripped on forward (EWS)

我将 C# 与 Exchange Web 服务 (EWS) 结合使用。

我有需要转发的会议,每当我这样做时,它们都会被删除,但仅来自某些帐户,而不是其他帐户。会议的 link 仍然存在,但联机 Outlook 未将其识别为会议项目,连接到该帐户的 Teams 也未将其识别。

即使我手动转发也会发生这种情况,但仅当我转发来自某些帐户的电子邮件时才会再次出现 - 其他一些帐户没问题!

我在收到的电子邮件中使用它:

 var fwdEmailArr = new EmailAddress[1];
 fwdEmailArr [0] = fwdEmail;
 MeetingRequest appointment = MeetingRequest.Bind(service, email.Id);
 appointment.Forward("", fwdEmailArr);

如果我也使用 email.forward 等也会出现同样的问题

但是,如果我创建一个新约会并发送它,它不会被删除 - 这是使用相同的地址。

Appointment appt = new Appointment(service);
appt.Subject = email.Subject;
appt.Body = appointment.Body;
appt.Start = appointment.Start;
appt.End = appointment.End;
appt.Location = appointment.Location;
appt.RequiredAttendees.Add(fwdEmail);
foreach (var reqAtt in appt.RequiredAttendees)
{
    appt.RequiredAttendees.Add(reqAtt);
}

foreach (var reqAtt in appt.OptionalAttendees)
{
    appt.OptionalAttendees.Add(reqAtt);
}
appt.RequiredAttendees.Add(appointment.From.Address);
appt.Save(SendInvitationsMode.SendToAllAndSaveCopy);

所以,我可以这样做,但这意味着他们不再是同一个会议,拒绝原始会议也不会拒绝这个。除非有什么方法可以连接会议或其他什么?

有什么办法可以阻止会议被剥夺吗?

或者只是将另一个收件人添加到当前会议,这将显示在他们的日历上?

如果有人带着类似的问题来到这里,事实证明,首先您需要确保在服务声明中定义了正确的服务器版本:

service = new ExchangeService(ExchangeVersion.Exchange2016){}

此外,出于某种原因,一些图像附加到转发的电子邮件时会使 EWS 感到困惑,并使其认为没有会议。我通过扫描 MIME 内容并提取日历块并删除所有其他附件来解决这个问题。

这已经完美运行了大约 5 个月。