2010-09-20 5 views
4

Je suis en mesure d'ouvrir Lotus notes api en utilisant Perl, sans erreur, je peux aussi obtenir la liste des points de vue qui comprend la boîte de réception, mais lorsque je tente de lire les messages de ce point de vue, il apparaît vide? Que pourrais-je faire de mal? (En fait, il semble que quelque chose pourrait de changé sur le côté des notes que ce code utilisé pour travailler avant)Comment utiliser Perl pour ouvrir la boîte de réception via l'API Lotus Notes?

Résultat code ci-dessous: NOM de vue est le suivant: ($ Inbox) a le nombre de: 0 etc.

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

Ont-ils tous un entryCount() de zéro? Je n'ai pas Lotus Notes depuis un moment, mais avez-vous essayé "-> {entryCount}" à la place (entryCount ressemble plus à un attribut qu'à une méthode)? – runrig

+0

J'ai essayé de changer et ai même résultat, aucun changement, boîte de réception encore 0, il y a peu avec au-dessus de 0, seulement 2 d'environ 15 vues, par exemple: –

+0

NOM de vue est le suivant: ($ FolderAllInfo) a le nombre de: 12 –

Répondre

1

Est-ce la boîte aux lettres ouverte à tous les utilisateurs? Vous pouvez essayer de définir l'accès -Default- à Manager et lui accorder tous les rôles disponibles, juste pour vous assurer que ce n'est pas un problème de sécurité empêchant la visualisation des documents.

+0

Comment puis-je faire cela, j'ai essayé d'aller au client notes et en sécurité j'ai coché toutes les cases à cocher pour "aucune signature" et pour "utilisateur par défaut", y at-il autre chose? Comment pourrais-je savoir si c'est un problème de sécurité? –

+0

Vous devez modifier l'ACL. Allez dans Fichier> Base de données> Contrôle d'accès. Donnez l'accès -Default-user Manager à la base de données et sélectionnez tous les rôles dans le coin inférieur droit de la boîte de dialogue. Cela exclura la sécurité étant un problème. BTW, savez-vous à qui vous vous connectez comme via ce script? –

+0

Voilà, c'est probablement le problème.n'a pas réalisé que depuis que je pouvais lire les vues que je ne pouvais pas lire les entrées réelles là-dedans, on dirait que je n'ai pas assez d'accès pour changer les rôles ou les accès par défaut, comment puis-je changer comme moi plutôt que l'utilisateur par défaut? –

1

Je crois qu'il est écrit "EntryCount"?

Aussi, je recommande "use strict" et "utiliser des avertissements".

+0

Merci, il est intéressant que j'ai des chiffres au-dessus de 0 pour quelques-uns des dossiers, va tester maintenant. –

1

par le commentaire de Runrig, EntryCount est un attribut, donc je crois que vous avez besoin: vue $ -> {} entryCount

+0

donc cela n'a pas semblé faire la différence, voir le commentaire ci-dessus, d'autres pensées? –

1

Essayez de vérifier les messages Win32 :: OLE :: LastError(). Vous pouvez le faire explicitement avec un sous comme:

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

Ou, faites coassent erreurs, comme:

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

Il peut avoir des problèmes accéder aux données que vous voulez.

+0

Merci pour le conseil, j'ai ajouté cela, et il se plaignait de "$ database -> OpenMail;" en disant que DB est déjà ouvert, donc j'ai supprimé cette ligne, pas d'autre changement, mais il ne semble pas qu'il y ait une autre erreur. –

Questions connexes