【问题标题】:Addin outlook - Save mail automatically does not work with standard userAddin Outlook - 自动保存邮件不适用于标准用户
【发布时间】:2015-12-02 16:20:19
【问题描述】:

我有一个 Outlook 插件,可以在其中以编程方式更新用户属性。

到目前为止,我以管理员权限执行了插件和 Outlook。一切正常。

我将事件附在转发的邮件中:

    void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
    {
        try
        {
            MailItem mail = Inspector.CurrentItem as MailItem;
            if (mail != null)
            {
                ((Outlook.ItemEvents_10_Event)mail).Forward += new ItemEvents_10_ForwardEventHandler(Forward_Event);
        }
        finally
        {
            Marshal.ReleaseComObject(Inspector);
        }
    }

然后我更新邮件的用户属性并保存。

    void Forward_Event(object Forward, ref bool Cancel)
    {
        MailItem mail = Forward as MailItem;
        if (mail != null && OutlookHelper.GetUserProperty(mail) != null)
        {
            OutlookHelper.SetUserProperty(mail, null);
            EventLog.WriteEntry("Application", "Before save forward : " + mail.Saved); // mail.Saved = false
            mail.Save();
            EventLog.WriteEntry("Application", "After save forward : " + mail.Saved); // mail.Saved = true
        }
    }

我可以在日志中看到,在调用 Save() 方法后,我的邮件的 Saved 属性设置为 True

但是,由于我使用标准用户来执行插件(链接到客户需求),当我关闭电子邮件时,会出现一个弹出窗口,要求我手动保存转发邮件的用户属性。管理员权限不会出现此问题。

感谢大家的帮助

【问题讨论】:

    标签: c# vsto outlook-addin


    【解决方案1】:

    好吧,经过一些深入的研究,邮件是“只读的”,然后对 Save() 方法的调用并没有真正保存。当我删除对保存的调用时,弹出窗口消失了......我不太了解这种行为,但它有效!

    希望这对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 2016-07-23
      • 2019-08-11
      • 1970-01-01
      相关资源
      最近更新 更多