歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

編寫關於SendMaild的CGI

  在UNIX主機上我門可以很輕易地通過編程來發送EMAIL,有時我們需要把從表單上得來數據整理後發送到一個信箱裡,例如來訪者的留言,在線申請。     在UNIX系統中通常會有一個 sendmail 程序用來發送EMAIL的,這是一個十分復雜的電子郵件系統,但我們在CGI編程中用它來發送EMAIL是十分簡單的事,具體的操作是打開一個通道,把輸出的信息作為sendmail這個程序輸入     代碼如下:     open (MAIL,"/usr/sbin/sendsendmail [email protected]"); #注意其間的空格print MAIL $msg close MAIL;     這樣我們就可以把變量$msg中的內容通過服務器上的 sendmail 程序發送到地址為[email protected] 的信箱中,要注意的是這只是一個簡單的例子,還有一些細節的地方是需要討論的。在上述的程序中,郵件的接受者將會收到一封沒有標題、沒有回信地址的信件,要想發出去的信件像樣一點,就必須在發送內容之前送出信頭:請看以下例子:     open (MAIL,"/usr/sbin/sendsendmail [email protected]");   print MAIL "To: $toemailn";   print MAIL "From: $fromemailn";   print MAIL "Reply-to: $fromemailn";   print MAIL "Subject: $subjectn";   printMAIL $msg;   print MAIL "nn";   close MAIL;     我們看到的"To:"、"From:"、"Reply-to:"、"Subject:" 就是用來標識信頭的,它們郵件程序中不會被當作是信件的正文在處理,程序中的換行符號是必需的的。     在這裡不得不提一下安全問題,有時我們發信的的地址是從表單上獲得的,如果不嚴格檢查從表單上獲得的EMAIL地址的合法性,將會給惡意的攻擊者帶來攻擊的機會,讓你的CGI程序執行一些破壞系統的操作,後果是非常嚴重的。簡單舉個例子說明:     if ($FORM{'mailto'}=~/(.*)@(.*)/){   。。。。。   。。。。。   。。。。。   }




Copyright © Linux教程網 All Rights Reserved