【发布时间】:2021-02-02 23:39:46
【问题描述】:
我们有一个适用于 Outlook 的 VSTO 插件,它支持预订由我们的云系统管理的资源。 此外,我们还支持在 Exchange 中作为房间提供的资源,以支持与其他系统的集成。
当我们执行此类房间的预订时,加载项会将房间对应的 Exchange 电子邮件地址添加给收件人,因此它也会在 Exchange 中预订。
这曾经可以正常工作,但现在我们收到了客户的报告,称他们无法再通过 Exchange 集成为资源创建预订。他们收到的错误完全没有帮助:
System.ArgumentException: Der gik desværre noget galt. Du kan prøve igen.
ved Microsoft.Office.Interop.Outlook._AppointmentItem.Save()
(英文:“出了点问题。你可以再试一次”)
当加载项在添加一些自定义属性后尝试保存项目时会发生这种情况。我认为错误是由将 Exchange 房间添加到收件人的加载项触发的,因为没有 Exchange 集成的资源不会发生这种情况。
这是我们用来添加收件人的代码:
var rec = ...; // custom DTO with recipient info
string recipientInfo = string.IsNullOrEmpty(rec.Email)
? rec.OutlookName
: rec.Email;
var recRecip = appointment.Recipients.Add(recipientInfo);
recRecip.Type = rec.RecipientType;
if (Current.Settings.IsEnabled(FeatureFlag.ResolveAddedRecipients))
{
using (LogHelper.TimedTask($"resolving recipient [{rec}]", Log))
{
recRecip.Resolve();
}
}
我可以从日志中看到,房间收件人有电子邮件地址,所以上面的代码将通过电子邮件添加。此外,解析收件人的功能标志已启用,因此代码将在之后调用resolve。
这里可能出了什么问题?
编辑:他们的 Outlook 版本是 16.0.0.5071。
【问题讨论】:
-
AppointmentItem来自哪里?您是否在 Outlook 保存约会后立即修改并保存约会? -
@DmitryStreblechenko AppointmentItem 来自 Explorer 对象。用户在 Outlook 中创建或编辑会议时使用我们的加载项执行预订。该错误发生在用户保存并发送会议请求之前。
-
您使用的是单个实例或约会还是重复约会的实例?
-
@DmitryStreblechenko 抱歉回复晚了,圣诞节假期等等。这是一次约会(准确地说是会议),而不是定期约会的实例。
标签: outlook vsto outlook-addin outlook-object-model