依赖于“SMS”和“ActiveSync”命名消息存储的PR_DISPLAY_NAME属性

时间:2011-01-19 11:05:55

标签: windows-mobile mapi

我正试图找出Windows移动设备上的消息存储类型(版本6.1和6.5)。

更具体地说,我试图找出邮件存储是否为“Exchange(ActiveSync)”类型而不是SMS或其他电子邮件帐户类型(POP3,IMAP等)。

我依赖于以下事实:SMS Store的属性PR_DISPLAY_NAME返回的值为"SMS",而Exchange Store的值为"ActiveSync"

我的问题是,我可以依赖这些值来确定邮件存储类型吗?有没有更好的方法来实现这一目标?

以下是描述我逻辑的伪代码:

 bool isActiveSyncSet = areAnySyncAccountSet(); // I use Sync configuration service
                                                // provider to check if any ActiveSync accounts are set.

// Initialize MAPI and fetch all stores
while(we_have_stores) {

    // Open Current Store
    openCurrentStore(&currentStore);

    string storeName = fetchStoreName(currentStore); // using GetProps method fetch PR_DISPLAY_NAME

    if(storeName == "SMS" ) continue;
    if(isActiveSyncSet && storeName == "ActiveSync") {
          // We got the Exchange Message Store
          break;
    } else {
          // We have an E-Mail store but not an ActiveSync one
    }
}

2 个答案:

答案 0 :(得分:0)

经过大量离线研究和测试后,许多不同设备返回的字符串[1],我得出的结论是:

可以依赖对邮件存储的"ActiveSync"属性返回的字符串PR_DISPLAY_NAME,以将其标识为ActiveSync Exchange邮件存储。此消息存储在设备UI上显示为Outlook E-Mail。这至少适用于 6.1 6.5 设备。我没有 Windows 7手机上进行测试,因为这不是我应用的目标受众[2]。

希望这有助于任何人做类似的事情。

[1] 我测试的设备来自不同的供应商(HTC,LG,三星),因此我非常有信心这应该适用于运行Windows Mobile 6.1或6.5操作系统的模糊设备。
[2] 请随时添加有关Windows 7手机的信息,如果您有一个或有权访问一个。 (我不确定他们手机上是否还有MAPI)。

答案 1 :(得分:0)

我对Windows Mobile没有太多经验,但为什么不能检查PR_MDB_PROVIDER属性?