作为Windows服务运行时Jacob COM桥出现问题

问题描述

我正在编写一个可用于从MAPI邮箱下载电子邮件的应用程序。 MAPI是我可以使用的唯一可用协议。因此,经过研究,我发现我被迫使用COM桥来调用Outlook方法,因为没有其他解决方案可将Java应用程序连接到MAPI邮箱。我做了一个简单的测试应用程序,可以将整个电子邮件另存为.eml文件。但是当我尝试将此应用程序作为Windows服务运行时出现问题,我的应用程序只是挂在执行Outlook SaveAs对象的MailItem方法上。当我正常运行jar时,wverythings可以正常运行,但是当我使用YAJSW作为LocalSystem帐户上的服务运行它时,它只会停止以该方法执行。

        ActiveXComponent outlook = new ActiveXComponent("outlook.application");
        dispatch namespace = dispatch.call(outlook,"GetNamespace","MAPI").todispatch();


        dispatch sourceFolder = dispatch.call(namespace,"GetDefaultFolder",6).todispatch(); //Folder with all emails to save ID:6
        dispatch doneFolder = dispatch.call(namespace,23).todispatch(); //Folder with backups of done emails ID:23

        dispatch mailList = dispatch.get(sourceFolder,"Items").todispatch();
        int itemCount = dispatch.call(mailList,"Count").getInt();
        LOGGER.info("Mail count: " + itemCount);

        for(int i = 1; i <= itemCount; i++) {
            dispatch mail = dispatch.call(mailList,"Item",i).todispatch();
            LOGGER.info("Saving mail: " + tempMsgPath);
            dispatch.call(mail,"SaveAs",tempMsgPath); //hangs there
            LOGGER.info("Mail saved");
            more code....
        }

我认为这不是用户权限的问题,经过测试并没问题。它必须作为服务工作,我知道有一个Outlook兑换服务,但是我不想购买任何lib。也许还有其他方法可以通过MAPI从该邮箱中获取邮件

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)