帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > PHP编程
用PHP编制邮件转发通用程序
作者:佚名 发布时间:2005-04-02 来源:不详
 在网站建设过程当中经常需要提供一些表格,根据用户的选择将用户信息转发至不同的e-mail中。 单独转发一个e-mail比较简单,在网上也有许多用PERL语言编制的程序,但一次根据情况转发至不同的e-mail则相对较难,我这段时间刚好需要,所以用PHP编写了这个程序,使用情况良好,所以提供给大家共享。 PHP处理程序如下: // purpose: transformming email // author: pengwu wang // date: Oct. 21,2003 /*用send-form.php要求的字段的说明: form中method 用 post namex, 用户名 title, 显示的标题 from, 从那儿送过来,缺省test@test.com urlto, 是完成以后显示的页面, 缺省取为空,即在原网页不动,有一个提示框显示,否则转至要求的网页 cc, 密送的邮箱地址,缺省取test@test.com sendto_name, 要替换sendto或sendto[]的名称, sendto缺省用'sendto',sendto[]缺省用'发送至' namex_name, 要替换namex的名称, 缺省用namex sendto, 要发送至单独一个email的项 或 sendto[], 要发送至多个email的项, 对每一个checkbox,radio按钮,其name写sendto[]=...... email_1, email_2, email_3, email_4, ......, 根据sendto[]值发向不同地的email地址值. 此处的1,2,3,4等要换成与sendto[]所选值完全相等 如:email_测试1=test1@test.com, email_测试2=test2@test.com 则sendto[]项最后可取的值应为: 测试1,测试2 对于表单中不需要的字段应以hidden方式发送; namex,title,sendto,或sendto[]是必须填写的. 当为sendto[]时email_*值必须写. 其它的可以不写 除sendto[]外,其它的name不能重复,因为不好判断其组别关系. */ //此6个变量先取出来是为了方便 $from=$_POST[from]; $cc=$_POST[cc]; $urlto=$_POST[urlto]; $sendto=$_POST[sendto]; $sendto_name=$_POST[sendto_name]; $namex_name=$_POST[namex_name]; $ret=false; if(!is_array($sendto) && !empty($sendto)) $ret=true; if(is_array($sendto)) { //多邮件发送 reset($sendto); while(list($k,$v)=each($sendto)) { if(isset($k) && isset($v)) { $ret=true; break; } } } if(!$ret) { echo(" "); exit; //所给的邮件地址都为空 } $subject .= $_POST[title]." - ".$_POST[namex]; $body = ""; $body .= $subject." "; $body .= "填表日期 : ".date("Y年m月d日",time())." "; $body .= "---------------------------------------- "; $body .= " "; reset ($_POST); while (list ($key, $val) = each ($_POST)) { if(ereg("^email_.*",$key)) continue; else if(strcmp($key,"title")==0) continue; else if(strcmp($key,"cc")==0) continue; else if(strcmp($key,"from")==0) continue; else if(strcmp($key,"urlto")==0) continue; else if(strcmp($key,"sendto_name")==0) continue; else if(strcmp($key,"namex_name")==0) continue; else if(strcmp($key,"sendto")==0 && !is_array($key) && empty($val)) continue; $body .= " "; if(strcmp($key,"sendto")==0 && is_array($sendto)) { reset($sendto); while(list($k,$v)=each($sendto)) { if(isset($sendto_name) && !empty($sendto_name)) $body .= " $sendto_name$v"; else $body .= " 发送至$v"; $body .= " "; } } else { if(strcmp($key,"sendto")==0) $body .= " $sendto_name$val"; else if(strcmp($key,"namex")==0) $body .= " $namex_name$val"; else $body .= " $key$val"; $body .= " "; } } $body .= ""; if(!is_array($sendto) && !empty($sendto)) { //单邮件 $to = $sendto; } else if(is_array($sendto)) { //多邮件 ; reset($sendto); $to=""; while (list ($k, $v) = each ($sendto)) { $e="email_".$v; $e=trim($e); if(isset($_POST[$e])) $to .= "$_POST[$e],"; } if(substr($to,-1)==',') $to=substr($to,0,strlen($to)-1); } $body .= " REMOTE IP : ".$REMOTE_ADDR; $body .= ""; if(!isset($from)    empty($from)) $from="test@test.com"; $headers = "MIME-Version: 1.0rn"; $headers .= "Content-type: text/html; charset=gb2312rn"; $headers .= "From: ".$from."rn"; if(!isset($cc)    empty($cc)) { $cc="test@test.com"; } $headers .= "Bcc: ".$cc."rn"; mail($to, $subject, $body, $headers); if(isset($urlto) && !empty($urlto)) { header("Location: $urlto"); } else { echo(" "); } ?> 假设PHP处理程序名为send-form.php,存放在网上的主页下,则一个简单的HTML测试程序如下,供大家参考: 测试表格 姓名: 我要去: 北京的学校 我要去: 上海的学校 我要去: 西安的学校
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·如何用php调用Java对象的方法  (2005-04-02)
 ·用PHP开发qmail邮件服务器管理系  (2005-04-02)
 ·用PHP制作动态计数器  (2005-04-02)
 ·PEAR:使用PHPDoc轻松建立你的PE  (2005-03-11)
 ·用PHP创建动态图形  (2005-03-11)
 ·如何用PHP把RDF内容插入Web站点之  (2005-03-11)
 ·如何用PHP把RDF内容插入Web站点之  (2005-03-11)
 ·如何用PHP把RDF内容插入Web站点之  (2005-03-11)
 ·如何用PHP把RDF内容插入Web站点之  (2005-03-11)
 ·如何用PHP把RDF内容插入Web站点之  (2005-03-11)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·Windows下集成安装Apache,PHP,MYSQ
·Mysql注入:SQL Injection with MyS
·PHP 的来龙去脉
·PHP 的功能概述
·PHP与其它CGI的比较
·PHP 的编译配置详细选项
·php.ini 配置详细选项
·如何写作PHP程序
·Hello,World
·嵌入方法
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统