2010-09-20 59 views
4

我能够使用Perl打开Lotus notes api,没有错误,我也可以获得包含收件箱的视图列表,但是当我尝试从该视图中读取消息时,它显示为空?我可能会做错什么? (事实上​​,它看起来像是可能对笔记一边改变使用此代码之前工作)的下面的代码如何使用Perl通过Lotus Notes API打开收件箱?

结果: NAME浏览的是:($收件箱)具有数:0 等

CODE:

use Win32::OLE; 
my $Notes = Win32::OLE->new('Notes.NotesSession') 
or die "Cannot start Lotus Notes Session object.\n"; 
my $database = $Notes->GetDatabase("",'mail\VIMM.nsf'); 
$database->OpenMail; 
my $array_ref = $database->{Views}; 
foreach my $view (@$array_ref) { 
    my $name = $view->{Name}; 
    print "NAME of View is: $name "; 
    $view = $database->GetView($name); 
    print "has count of: ", $view->{entryCount}, "\n"; 
} 
+0

他们都有一个entryCount()为零吗?我有一段时间没有不使用Lotus Notes,但是您是否尝试使用“ - > {entryCount}”(entryCount听起来像是一种属性而不是方法)? – runrig 2010-09-20 20:47:52

+0

我试着改变并得到相同的结果,没有改变,收件箱仍然是0,有几个以上的0,只有约15个视图中有2个,例如: – 2010-09-20 21:10:16

+0

NAME of View是:($ FolderAllInfo)的计数为:12 – 2010-09-20 21:10:46

回答

1

邮箱是否向所有用户开放?您可以尝试设置-Default-访问Manager并授予其所有可用角色,以确保它不是一个安全问题,从而防止文档被看到。

+0

我该怎么做,我试着去注释客户端,并在安全中我选中了“无签名”和“默认用户”的所有复选框,还有别的吗?我如何能够判断它是否是一个安全问题? – 2010-09-23 23:20:48

+0

您需要更改ACL。转到文件>数据库>访问控制。为数据库提供-Default-用户管理器访问权限,并选择对话框右下角的所有角色。这将排除安全问题。顺便说一句,你知道你是通过这个脚本登录吗? – 2010-09-24 13:52:14

+0

就是这样,这可能是问题所在。没有意识到,因为我可以阅读的意见,我无法读取其中的实际条目,看起来像我没有足够的访问权限来更改默认角色或访问,我该如何改变它,以便在我的代码我登录作为我自己而不是默认用户? – 2010-09-24 17:30:41

1

我相信这是拼写为 “EntryCount”?

此外,我建议“严格使用”和“使用警告”。

+0

谢谢,有趣的是我得到的数字高于0为少数的文件夹,现在会测试。 – 2010-09-20 21:07:21

1

每runrig的评论,EntryCount是一个属性,所以我相信你需要: $视图 - > {} entryCount

+0

这样似乎没有什么区别,看上面的评论,还有其他的想法吗? – 2010-09-20 21:46:26

1

尝试检查的Win32 :: OLE :: LastError()消息。你可以像一个子明确地做到这一点:

sub w32_ok { 
    if (my $error = Win32::OLE::LastError()) { 
     print "Win32::OLE Error! Got: $error"; 
    } 
} 

或者,有它呱呱叫的错误,如:

Win32::OLE->Option(Warn => 3); # will now croak on errors. 

它可能会在访问所需数据的问题。

+0

感谢您的提示,我补充说,它抱怨“$ database-> OpenMail;”说数据库已经打开,所以我删除了该行,没有其他更改,但没有出现任何其他错误。 – 2010-09-23 23:19:43