使用Perl開發Internet/Intranet應用之二(4)
發表時間:2024-02-10 來源:明輝站整理相關軟件相關文章人氣:
[摘要]----5 怎樣在程序中調用系統命令 ------以在程序中自動收發郵件為例 ----CGI的推出就是為了使WebServer可以與更多的數據源溝通,常用的數據源有三種:數據庫、非關系型數據文件(如txt文本)、郵件系統。前二者的連接和讀寫都有很多的方法,這里就不再相述。我主要想談談在CGI程式中...
----
5 怎樣在程序中調用系統命令 ------
以在程序中自動收發郵件為例 ----CGI的推出就是為了使WebServer可以與更多的數據源溝通,常用的數據源有三種:數據庫、非關系型數據文件(如txt文本)、郵件系統。前二者的連接和讀寫都有很多的方法,這里就不再相述。我主要想談談在CGI程式中怎樣才能讀取到郵件系統的郵件,自動發送郵件又是怎樣進行的。Microsoft最近推出了ADO(ActiveXDataObject),只要相應數據源能提供OLEDB(DataProviderInterfaces),我們的應用程序就可調用ADO透明的訪問該數據源(包括前面我們提到的三種數據源)。這種應用在郵件系統方面現在還只限于在MicrosoftExchangeServer上,由于這是新標準,實用與否還要看數據源供應商的反應和是否提供OLEDB接口。下面,我給大家介紹另外一種較為通用的實現方法。
----
讀取郵件:在很多unix系統中,郵件一般都放在/var/mail目錄下,每個用戶的郵件就存放在一個以該用戶名命名的文本文件中,例如:/var/mail/zyr。如果我們要讀取或查找該郵件信息,只要打開相應的文件即可。但該程式的運行者須有讀取該用戶郵件的權限,可在系統中用命令chmod進行設置。下面以一個perl程序為例:
----#該程序用于讀取郵件,如果成功就把每一行數據打印出來
#!/bin/perl
#如果該路徑已加入PATH中,上句可省
$mail_path="/var/mail/zyr";
#郵件路徑
if(!open(vmail,"< $mail_path")){
print"can'topen$mail_path";
exit;
}
else{
while($temp=< vmail >){
#取出每一行數據放在$temp中
print$temp;
}
}
close(vmail);