微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 在Outlook MailItem中设置自定义标头

我正在处理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);
   }
}

保存邮件项目后,我正在尝试获取相同的项目进行验证,但是它会抛出异常,说明找不到该属性.

解决方法

虽然直接获取PropertyAccessor的引用是不必要的,但我没有看到您的代码存在问题.尝试:

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

    mail.Save();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐