当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 编写关于SendMaild的CGI

Unix/Linux
Linux命令Man解释:useradd:帐号建立或更新
Linux 网管 123 --- 第7章. 自订的组态及管理内容 -7.使用 Linuxc
Linux 网管 123 --- 第8章. 备份及回存程序 -1.伺服器备份程序
Linux 网管 123 --- 第8章. 备份及回存程序 -2.伺服器回存程序(tar.
Linux 网管 123 --- 第8章. 备份及回存程序 -3.Cisco 路由器组态备
Linux 网管 123 --- 第9章. 各种杂项管理工作 -1.检查储存空间
Linux 网管 123 --- 第9章. 各种杂项管理工作 -2.管理进程
Linux 网管 123 --- 第9章. 各种杂项管理工作 -3.进程的启动及停止
Linux 网管 123 --- 第9章. 各种杂项管理工作 -4.使用 Cron 及 C
Linux 网管 123 --- 第10章. 升级 Linux 及其他应用软体 -1.使用
Linux 网管 123 --- 1. 前言 2. 简介
Linux 网管 123 --- 第3章. 概观 Linux
Linux 网管 123 --- 第4章. 安装及硬体组态 - 1.建立一张安装磁片
轻轻松松的安装Slackware Linux -- 4.如何在硬碟建置Linux系统
轻轻松松的安装Slackware Linux -- 5.其他非标准安装程序解析
如何重新设定时区
Linux中有没有支援 Solairs x86 的档案系统?有的话要如何mount?
MBR如果被覆盖了怎麽办?
如何使用命令trap来捕捉信号?
如何进行增量备份?

Unix/Linux 中的 编写关于SendMaild的CGI


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 101 ::
收藏到网摘: n/a


  在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'}=~/(.*)@(.*)/){ 
  。。。。。 
  。。。。。 
  。。。。。 
  }