日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

編寫關(guān)于SendMail的CGI

在UNIX主機(jī)上我們可以很輕易地通過(guò)編程來(lái)發(fā)送EMAIL,有時(shí)我們需要把從表單上得來(lái)數(shù)據(jù)整理后發(fā)送到一個(gè)信箱里,例如來(lái)訪者的留言,在線申請(qǐng) 。
在UNIX系統(tǒng)中通常會(huì)有一個(gè) sendmail 程序用來(lái)發(fā)送EMAIL的,這是一個(gè)十分復(fù)雜的電子郵件系統(tǒng),但我們?cè)贑GI編程中用它來(lái)發(fā)送EMAIL是十分簡(jiǎn)單的事,具體的操作是打開一個(gè)通道,把輸出的信息作為sendmail 這個(gè)程序輸入
代碼如下:
open (MAIL,"|/usr/sbin/sendsendmail zjxyz@XXXX.XXX"); #注意其間的空格
print MAIL $msg
close MAIL;
這樣我們就可以把變量$msg中的內(nèi)容通過(guò)服務(wù)器上的 sendmail 程序發(fā)送到地址為zjxyz@XXXX.XXX 的信箱中,要注意的是這只是一個(gè)簡(jiǎn)單的例子,還有一些細(xì)節(jié)的地方是需要討論的 。
在上述的程序中,郵件的接受者將會(huì)收到一封沒(méi)有標(biāo)題、沒(méi)有回信地址的信件,要想發(fā)出去的信件像樣一點(diǎn),就必須在發(fā)送內(nèi)容之前送出信頭:請(qǐng)看以下例子:
open (MAIL,"|/usr/sbin/sendsendmail zjxyz@XXXX.XXX");
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:" 就是用來(lái)標(biāo)識(shí)信頭的,它們郵件程序中不會(huì)被當(dāng)作是信件的正文在處理,程序中的換行符號(hào)是必需的的 。
在這里不得不提一下安全問(wèn)題,有時(shí)我們發(fā)信的的地址是從表單上獲得的,如果不嚴(yán)格檢查從表單上獲得的EMAIL地址的合法性,將會(huì)給惡意的攻擊者帶來(lái)攻擊的機(jī)會(huì),讓你的CGI程序執(zhí)行一些破壞系統(tǒng)的操作,后果是非常嚴(yán)重的 。簡(jiǎn)單舉個(gè)例子說(shuō)明:
if ($FORM{'mailto'}=~/(.*)@(.*)/){
。。。。。
。。。。。
【編寫關(guān)于SendMail的CGI】 。。。。。
}

    推薦閱讀