c#如何在Windows移动设备上阅读消息存储库6

时间:2010-05-19 17:06:06

标签: c# windows-mobile

任何人都可以发布一个例子,如何在Windows移动设备6上阅读消息库? 我用“InTheHand”完成了这个:

foreach (InTheHand.WindowsMobile.PocketOutlook.SmsMessage mess in sess.SmsAccount.SentItems)
                {
                    if (mess.Received.Year == thisYear && mess.Received.Month == thisMonth)
                    {
                        smsThisMonth++;
                    }
                }

问题是,我只有InTheHand的评估版本。 如果可能的话,我想用OpenNetCF或mapidotnet来做这件事。 但我没有弄清楚如何使用OpenNetCF执行此操作,并且sourceforge网站(http://sourceforge.net/projects/mapidotnet/)上不再提供mapitdotnet。 我只在svn目录中找到它,但没有dll。

2 个答案:

答案 0 :(得分:1)

所有OpenNETCF库都没有提供此功能。我们没有打算尝试实现它,因为已经有一个可用的解决方案(InTheHand的库)和I don't like reinventing the wheel if there's a perfectly good one already available

如果他们的价格过于苛刻,您可以随时查看this MSDN article on COM Interop in the CF并将其与某些online tutorials on MAPIthe MAPI documentation结合使用。

The MAPIDotNet project is probably worth investigation too。你说没有二进制文件,但这有什么关系?你有一个编译器。

即使在C ++中,MAPI也很复杂且令人困惑。根据经验,我可以告诉你,在C#中完成所有工作(我在InTheHand拥有他们的产品之前的1.0天内做过)需要至少一周的时间,如果你知道如何使用COM和C ++。

答案 1 :(得分:1)

好的,我想通过mapidotnet如何做到这一点:

MAPI mapi = new MAPI();
IMAPIMsgStore[] stores = mapi.MessageStores;

        for (int i = 0; i < stores.Length; i++)
        {
            if (stores[i].DisplayName == @"SMS")
            {
                IMAPIFolder smsSentFolder = stores[i].SentMailFolder.OpenFolder();
                smsSentFolder.SortMessagesByDeliveryTime(TableSortOrder.TABLE_SORT_DESCEND);
                IMAPIMessage[] messages = smsSentFolder.GetNextMessages(999);
                for (int n = 0; n < messages.Length; n++)
                {
                    if (messages[n].LocalDeliveryTime.Month == monat && messages[n].LocalDeliveryTime.Year == jahr)
                    {
                        smsDiesenMonat++;
                    }
                }
            }

我实际编译了该项目,但是我有一个奇怪的错误,我无法将Mapilib.dll添加到我的项目中。 但现在我开始工作了。