分享
 
 
 

用PHP编制邮件转发通用程序

王朝php·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

在网站建设过程当中经常需要提供一些表格,根据用户的选择将用户信息转发至不同的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.0\r\n";

$headers .= "Content-type: text/html; charset=gb2312\r\n";

$headers .= "From: ".$from."\r\n";

if(!isset($cc) empty($cc)) {

$cc="test@test.com";

}

$headers .= "Bcc: ".$cc."\r\n";

mail($to, $subject, $body, $headers);

if(isset($urlto) && !empty($urlto)) {

header("Location: $urlto");

} else {

echo("

");

}

?>

假设PHP处理程序名为send-form.php,存放在网上的主页下,则一个简单的HTML测试程序如下,供大家参考:

<html>

<head>

<title>申请学校</title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

</head>

<body>

<center>

<form action="/send-form.php" method="post">

<input type="hidden" name="title" value="申请学校简表">

<input type="hidden" name="namex_name" value="姓名">

<input type="hidden" name="sendto_name" value="我要去">

<input type="hidden" name="email_北京" value="beijing@test.com">

<input type="hidden" name="email_上海" value="shanghai@test.com">

<input type="hidden" name="email_西安" value="xian@test.com">

<table>

<caption><b>测试表格</b></caption>

<tr>

<td>姓名:</td>

<td><input type="text" name="name"></td>

</tr>

<tr>

<td>我要去:</td>

<td><input type="checkbox" name=sendto[] value="北京">北京的学校</td>

</tr>

<tr>

<td>我要去:</td>

<td><input type="checkbox" name=sendto[] value="上海">上海的学校</td>

</tr>

<tr>

<td>我要去:</td>

<td><input type="checkbox" name=sendto[] value="西安">西安的学校</td>

</tr>

<tr>

<td colspan=2><input type=submit value="提交申请"></td>

</tr>

</table>

</form>

</center>

</body>

</html>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有