VSTO Outlook用户属性(自定义)未同步

本文关键字:同步 自定义 Outlook 用户 属性 VSTO | 更新日期: 2023-09-27 18:27:03

我遇到一个问题,当我将自定义UserProperty添加到Outlook MailItem时,它不会同步到其他连接的Outlook。

我可以做些什么来强制Outlook同步整个电子邮件?

我的总体问题:我有一个共享的Exchange邮箱,在两个客户端上打开(在Outlook中)我想锁定一个邮件项目,如果它在一个Outlook中打开,并向第二个Outlook用户显示一条消息,如"用户XX当前正在阅读此电子邮件"

我解决问题的方法:正在创建Outlook插件。当用户"A"打开电子邮件时,我将向MailItem对象添加一个"LockingUser"UserProperty。如果用户"B"试图打开电子邮件,我首先查看是否存在"LockingUser"属性。我已禁用缓存模式。我已经尝试更新电子邮件的主题:这非常有效,可以立即同步(但不是解决我问题的方法)

private void SetLockingUser(Outlook.MailItem mail)
{
    var lockingUserProperty = mail.UserProperties.Find("LockingUser");
    if (lockingUserProperty != null)
    {
        MessageBox.Show("Email locked by: " + lockingUserProperty.Value);
        return;
    }
    var identity = System.Security.Principal.WindowsIdentity.GetCurrent();
    var username = identity != null ? identity.Name : "";
    lockingUserProperty = mail.UserProperties.Add("LockingUser", Outlook.OlUserPropertyType.olText, false, 1);
    lockingUserProperty.Value = username;
    mail.Save();
}

VSTO Outlook用户属性(自定义)未同步

请显示代码的相关片段,并确保调用MailItem.Save。还要记住,始终会有延迟,因为如果使用缓存模式,更改将需要几分钟的时间同步到Exchange,然后同步到另一个用户。您最好使用一些外部同步机制,而不是用户属性。