You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Redemption获取邮件回执偏好并规避Outlook安全提示?附终端疑问

问题描述

我使用Redemption库(版本5.27.0.6916),希望通过在收件箱创建新MailItem来获取ReadReceiptRequested和OriginatorDeliveryReportRequested的默认偏好设置。但通过Outlook对象模型(OOM)互操作访问这些属性时,会触发Outlook安全补丁的确认对话框/安全提示——奇怪的是,这个问题仅在终端服务器会话中出现。我试过用SafeMailItem,但它没有实现这两个属性。我目前有读取注册表的备选方案,但想知道:

  1. 能否通过Redemption实现该需求?
  2. 为何问题仅在终端服务器会话中发生?

当前代码(基于OOM的实现):

var mailItem = Folders.NewItem<MailItem>(Stores.Get(accountId), DefaultFolders.Inbox); 

try
{
    return new CMailPreferences
    {
        DeliveryReceiptRequested = mailItem.OriginatorDeliveryReportRequested,
        ReadReceiptRequested = mailItem.ReadReceiptRequested,
    };
}
finally
{
    Marshal.ReleaseComObject(mailItem);
}
解决方案与解释

1. 通过Redemption实现需求

完全可以用Redemption实现,且不会触发Outlook安全提示。Redemption的RDOMail原生支持ReadReceiptRequested和OriginatorDeliveryReportRequested属性,且它绕过了OOM的对象模型安全限制,无需依赖注册表读取。

实现代码

直接使用Redemption的RDOSession和RDOMail对象来获取默认偏好:

using Redemption;

public CMailPreferences GetMailPreferences(string accountId)
{
    var session = new RDOSession();
    // 登录目标账号(若已关联Outlook实例,也可通过MAPIOBJECT直接绑定)
    session.Logon(accountId);
    
    var inbox = session.GetDefaultFolder(rdoDefaultFolders.olFolderInbox);
    var rdoMail = inbox.Items.Add("IPM.Note");

    try
    {
        return new CMailPreferences
        {
            DeliveryReceiptRequested = rdoMail.OriginatorDeliveryReportRequested,
            ReadReceiptRequested = rdoMail.ReadReceiptRequested,
        };
    }
    finally
    {
        // 清理资源
        rdoMail = null;
        inbox = null;
        session.Logoff();
        session = null;
    }
}

关键说明

  • 新创建的RDOMail会自动继承用户在Outlook中设置的默认回执偏好,无需额外配置。
  • Redemption直接与MAPI层交互,不会触发OOM的安全提示,无论本地还是终端服务器环境都适用。

2. 终端服务器会话触发安全提示的原因

这个差异通常由终端服务器的安全配置和Outlook运行模式导致:

  • 组策略限制:终端服务器上可能通过组策略启用了更严格的Outlook对象模型保护(比如Outlook Security Mode设置为Use Outlook Security Group Policy),而本地环境可能未启用或配置了信任应用程序例外。
  • 终端服务模式的安全补丁行为:部分Outlook安全补丁在终端服务器会话中会强化对象模型访问验证,因为多用户环境下的安全风险更高。
  • 信任应用程序列表差异:本地环境可能将你的应用加入了Outlook的信任程序列表,而终端服务器上未配置该例外,导致访问OOM属性时触发提示。

内容的提问来源于stack exchange,提问作者ENOTTY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:50:54