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

Unix/Linux
Linux crontab定时执行任务 命令格式与详细例子
linux 查看用户及用户组的方法
让Linux系统有效防御ARP攻击的实用技巧
Linux 常用软件列表
linux wget 一个强大的下载命令
linux 常用脚本、命令
linux 磁盘配额 简单介绍
Linux服务器架设笔记 Squid服务器配置
ubuntu intel 集成显卡安装
ubuntu 9.04 X3100 显卡开启3D特效
Ubuntu 8.10 Server Ruby 的安装方法
Ubuntu root帐户密码修改
ubuntu下apt-get 命令参数
Ubuntu Linux下实现QQ的三种方式
Ubuntu 8.04中建立PHP+MySQL环境
Ubuntu常用软件大全
Ubuntu系统下安装Aircrack-ng
Ubuntu实现FTP功能
ubuntu 字体美化实现方法
ubuntu下netbeans汉字显示残缺问题

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 48 ::
收藏到网摘: 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'}=~/(.*)@(.*)/){ 
  。。。。。 
  。。。。。 
  。。。。。 
  }