在Outlook MailItem中设置自定义标题头

4
我正在开发一个Outlook插件,需要设置自定义头文件。我使用VS2010进行开发。
我正在尝试以下代码,但似乎不起作用。
private void AddUserProperty(Outlook.MailItem mail, string folderEmailId)
{

    Outlook.PropertyAccessor mailPropertyAccessor = null;
    try
    {

        if (string.IsNullOrEmpty(folderEmailId))
             return;

        mailPropertyAccessor = mail.PropertyAccessor;
        mail.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/X-WorksiteFolderEmailId", folderEmailId);

        mail.Save();

        try
        {
             MessageBox.Show("Existing :" + mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/X-WorksiteFolderEmailId"));
        }
        catch (System.Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
   }
   catch (System.Exception ex)
   {
        Logger.Error(ex);
        MessageBox.Show(ex.Message);
   }
   finally
   {
        if (mailPropertyAccessor != null)  
            Marshal.ReleaseComObject(mailPropertyAccessor);
   }
}

保存邮件项目后,我试图获取相同的项目进行验证,但它抛出一个异常,说找不到该属性。


你没有使用 mailPropertyAccessor 来设置任何内容。 - ohlmar
如果您使用OutlookSpy查看邮件(点击IMessage按钮),您能够看到该属性吗? - Dmitry Streblechenko
1个回答

1

我认为你的代码没有问题,不过直接获取PropertyAccessor的引用是不必要的。可以尝试使用以下代码:

    string prop = "http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/X-WorksiteFolderEmailId";
    mail.PropertyAccessor.SetProperty(prop, folderEmailId);

    mail.Save();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接