使用sock技术发邮件,无需服务器支持。速度快!! <div class="codetitle"><a style="CURSOR: pointer" data="68116" class="copybut" id="copybut68116" onclick="doCopy('code68116')"> 代码如下:<div class="codebody" id="code68116"> functionsend_mail($to,$subject,$body) { /////////////Smtp信息,可以修改成你的,////////// $loc_host="longbill";//发信计算机名,可随意 $smtp_acc="longbill.mail";//Smtp认证的用户名, $smtp_pass="longbill";//Smtp认证的密码, $smtp_host="smtp.163.com";//SMTP服务器地址, $from="longbill.mail@163.com";//要与smtp信息对应,否则会失败 /////////////Smtp信息完////////////////////////////////// $headers="Content-Type:text/plain;charset="gb2312"rnContent-Transfer-Encoding:base64"; $lb="rn";//linebreak $hdr=explode($lb,$headers);//解析后的hdr if($body) { $bdy=preg_replace("/^./","..",explode($lb,$body)); }//解析后的Body $smtp=array( //1、EHLO,期待返回220或者250 array("EHLO".$loc_host.$lb,"220,250","HELOerror:"), //2、发送AuthLogin,期待返回334 array("AUTHLOGIN".$lb,"334","AUTHerror:"), //3、发送经过Base64编码的用户名,期待返回334 array(base64_encode($smtp_acc).$lb,"AUTHENTIFICATIONerror:"), //4、发送经过Base64编码的密码,期待返回235 array(base64_encode($smtp_pass).$lb,"235","AUTHENTIFICATIONerror:")); //5、发送MailFrom,期待返回250 $smtp[]=array("MAILFROM:<".$from.">".$lb,"250","MAILFROMerror:"); //6、发送RcptTo。期待返回250 $smtp[]=array("RCPTTO:<".$to.">".$lb,"RCPTTOerror:"); //7、发送DATA,期待返回354 $smtp[]=array("DATA".$lb,"354","DATAerror:"); //8.0、发送From $smtp[]=array("From:".$from.$lb,"",""); //8.2、发送To $smtp[]=array("To:".$to.$lb,""); //8.1、发送标题 $smtp[]=array("Subject:".$subject.$lb,""); //8.3、发送其他Header内容 foreach($hdras$h){$smtp[]=array($h.$lb,"");} //8.4、发送一个空行,结束Header发送 $smtp[]=array($lb,""); //8.5、发送信件主体 if($bdy) { foreach($bdyas$b) { $smtp[]=array(base64_encode($b.$lb).$lb,""); } } //9、发送“.”表示信件结束,期待返回250 $smtp[]=array(".".$lb,"DATA(end)error:"); //10、发送Quit,退出,期待返回221 $smtp[]=array("QUIT".$lb,"221","QUITerror:"); //打开smtp服务器端口 $fp=@fsockopen($smtp_host,25); if(!$fp)echo"Error:Cannotconectto".$smtp_host." "; while($result=@fgets($fp,1024)) { if(substr($result,3,1)==""){break;} } $result_str=""; //发送smtp数组中的命令/数据 foreach($smtpas$req) { //发送信息 @fputs($fp,$req[0]); //如果需要接收服务器返回信息,则 if($req[1]) { //接收信息 while($result=@fgets($fp,1)==""){break;} } if(!strstr($req[1],substr($result,3))) { $result_str.=$req[2].$result." "; } } } //关闭连接 @fclose($fp); if($result_str==""){return"发送成功!!";}else{return$result_str;} }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|