![Rank: 9](images/default/star_level3.gif) ![Rank: 9](images/default/star_level3.gif) ![Rank: 9](images/default/star_level1.gif)
- UID
- 1
- 威望
- 1240 点
- 金钱
- 10002 金币
- 点卡
- 317 点
|
1#
发表于 2003-7-15 06:28
| 只看该作者
编写关于SendMail的CGI
在UNIX主机上我们可以很轻易地通过编程来发送EMAIL,有时我们需要把从表单上得来数据整理后发送到一个信箱里,例如来访者的留言,在线申请。
在UNIX系统中通常会有一个 sendmail 程序用来发送EMAIL的,这是一个十分复杂的电子邮件系统,但我们在CGI编程中用它来发送EMAIL是十分简单的事,具体的操作是打开一个通道,把输出的信息作为sendmail 这个程序输入- open (MAIL,"|/usr/sbin/sendsendmail zjxyz@XXXX.XXX"); #注意其间的空格
- print MAIL $msg
- close MAIL;
复制代码 这样我们就可以把变量$msg中的内容通过服务器上的 sendmail 程序发送到地址为zjxyz@XXXX.XXX 的信箱中,要注意的是这只是一个简单的例子,还有一些细节的地方是需要讨论的。
在上述的程序中,邮件的接受者将会收到一封没有标题、没有回信地址的信件,要想发出去的信件像样一点,就必须在发送内容之前送出信头:请看以下例子:- 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:" 就是用来标识信头的,它们邮件程序中不会被当作是信件的正文在处理,程序中的换行符号是必需的的。
在这里不得不提一下安全问题,有时我们发信的的地址是从表单上获得的,如果不严格检查从表单上获得的EMAIL地址的合法性,将会给恶意的攻击者带来攻击的机会,让你的CGI程序执行一些破坏系统的操作,后果是非常严重的。简单举个例子说明:- if ($FORM{'mailto'}=~/(.*)@(.*)/){
- 。。。。。
- 。。。。。
- 。。。。。
- }
复制代码 |
我是一个呼吸着现在的空气而生活在过去的人
这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
我已习惯了孤独,爱上孤独
他让我看清了自我,还原了自我
让我再静静的沉思中得到快乐和满足
再孤独的世界里我一遍又一遍
不厌其烦的改写着自己的过去
延伸到现在与未来
然而那只是泡沫般的美梦
产生的时刻又伴随着破灭的到来
在灰飞烟灭的瞬间我看到的是过程的美丽
而不是结果的悲哀。。。
|
|