2011-08-05 71 views
1

我試圖通過我的收件箱來搜索特定的電子郵件,但每次嘗試運行此腳本時都會出現$ search未初始化/未定義。語法有問題嗎?用Perl搜索Lotus筆記收件箱

use Win32::OLE; 
use Win32::OLE::TypeInfo; 

#Create a new NotesSession, which is basically like a new Lotus Notes instance 
my $Notes = Win32::OLE->new('Notes.NotesSession') or die "Could not open Lotus Notes"; 

#Prints the current user of Lotus Notes 
print "The current user is $Notes->{UserName}.\n"; 

#Gets the stuff in the listed Database 
my $Database = $Notes->GetDatabase('Server', 'mail.nsf'); 

# Open the mail 
$Database->OpenMail; 

# Create a new Document, ie email 
my $Document = $Database->CreateDocument; 

# Send the email to someone 
$Document->{SendTo} = ; 
# CC the email to someone 
$Document->{SendCc} = ; 
# Subject of the email 
$Document->{Subject} = 'Test'; 

my $date = $Notes->CreateDateTime("Today"); 
my $today = $date->DateOnly; 

my $search = $Database->Search("@Tripwire",$today,5); 
print $search->Count; 

由於

回答

4

「@Tripwire」 應爲:的說明A @function式定義的選擇標準。這意味着它需要與視圖選擇公式中的字符串類似。 Like Sendto =「@ TripWire」

+0

什麼是語法?我試過$ Database-> Search(Subject =「@Tripwire」,$ today,5);但我得到一個錯誤。我應該使用變體嗎? – Shahab

+0

在Lotusscript中,我會使用| Sendto =「@Tripwire」|作爲語法 –

+0

perl呢? – Shahab

1

或者您在數據庫中啓用全文搜索並使用FtSearch而不是搜索。

0

我不是Perl程序員,但相信你有其他問題。通過COM接口設置或訪問NotesItem值時,不支持「擴展語法」表示法。即,對$ Document - > {SendTo},$ Document - > {SendCc}和$ Document - > {Subject}的引用不正確。您應該使用$ Document-> ReplaceItemValue並提供項目名稱和值作爲參數。此外,SendCC不是正確的項目名稱。它應該是CopyTo。