使用php通过Socket进行发信源码,支持发信认证

使用php直接张开socket端口实行发信的小程序特点是接纳smtp认证,能够更加好的利用满足经常网上老铁建站要求。

if(send_mail(‘test@qq.com’,’邮件主旨’,’邮件内容’State of Qatar==””卡塔尔{
echo “发送成功!<br>”;
} else{
echo “发送退步!<br>”;
}

选择sock技巧发邮件,无需服务器帮助。速度快!! 

总体源码附在本文中,相通内容可到下列地方下载。转载请注解出处。

<?php
$to = “test@test.com”;
$subject = “Test Subject”;
$message = “This is the test email.”;
$from = “youremail@yourdomain.com”;
$headers = “From: $from”;
mail($to,$subject,$message,$headers);
?>

复制代码 代码如下:
function send_mail($to,$subject,$body)  
{  
/////////////Smtp消息,能够改良成你的,//////////  
   $loc_host = “longbill”;        //发信Computer名,可随意  
  $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”,”HELO error: “),  
  //2、发送Auth Login,期望回到334  
  array(“AUTH LOGIN”.$lb,”334″,”AUTH error:”),  
  //3、发送经过Base64编码的客商名,期望回到334  
  array(base64_encode($smtp_acc).$lb,”334″,”AUTHENTIFICATION error : “),  
  //4、发送经过Base64编码的密码,期望回到235  
  array(base64_encode($smtp_pass).$lb,”235″,”AUTHENTIFICATION error : “));  
 //5、发送Mail From,期望回到250  
 $smtp[] = array(“MAIL FROM: “.$lb,”250”,”MAIL FROM error: “);  
 //6、发送GL450cpt To。期望回到250  
 $smtp[] = array(“RCPT TO: “.$lb,”250”,”RCPT TO error: “);  
 //7、发送DATA,期望回到354  
 $smtp[] = array(“DATA”.$lb,”354″,”DATA error: “);  
 //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($hdr as $h) {$smtp[] = array($h.$lb,””,””);}  
 //8.4、发送三个空行,甘休Header发送  
 $smtp[] = array($lb,””,””);  
 //8.5、发送信件主体  
 if($bdy)  
 {  
   foreach($bdy as $b)   
   {  
     $smtp[] = array(base64_encode($b.$lb).$lb,””,””);  
   }  
 }  
 //9、发送“.”表示信件停止,期望回到250  
 $smtp[] = array(“.”.$lb,”250″,”DATA(end)error: “);  
 //10、发送Quit,退出,期望回到221  
 $smtp[] = array(“QUIT”.$lb,”221″,”QUIT error: “);  
 //展开smtp服务器端口  
 $fp = @fsockopen($smtp_host, 25);  
 if (!$fp) echo “Error: Cannot conect to “.$smtp_host.”
“;  
 while($result = @fgets($fp, 1024))  
 {  
    if(substr($result,3,1) == ” “) { break; }  
 }  
 $result_str=””;  
 //发送smtp数组中的命令/数据  
 foreach($smtp as $req)  
 {  
  //发送消息  
  @fputs($fp, $req[0]);  
  //假设供给选用服务器重返新闻,则  
  if($req[1])  
  {  
   //选拔音信  
   while($result = @fgets($fp, 1024))  
    {  
      if(substr($result,3,1) == ” “) { break; }  
    }  
    if (!strstr($req[1],substr($result,0,3)))  
    {  
      $result_str.=$req[2].$result.”
“;  
    }  
   }  
 }  
 //关闭连接  
 @fclose($fp);  
 if ($result_str==””卡塔尔国{return “发送成功!!”;}else {return $result_str;}  
}

/******************************************//*
Php webmail sender *//* *//* Copyright 富翁 in im286.com 2005.03.07
*//* 转发请阐明出处
*//******************************************/

 <?php
function send_mail($to, $subject = ‘No subject’, $body) {
$loc_host = “im286”; //发信Computer名,可随意
$smtp_acc = “test@126.com”; //Smtp认证的顾客名
$smtp_pass=”******”; //Smtp认证的密码,平日等同pop3密码
$smtp_host=”smtp.126.com”; //SMTP服务器地址,相符 smtp.tom.com
$from=”test@126.com”; //发信人Email地址,你的投送信箱地址
$headers = “Content-Type: text/plain; charset=”utf-8″
Content-Transfer-Encoding: base64”;
$lb=” “; //linebreak

//使用前请首先依照提醒进行陈设发信认证的客户名、密码以至smtp服务器地址、发件人信箱等。//注意将#替换成#,落伍()负翁版权全数,可自由动用,但保留版权新闻

$hdr=explode($lb,$headers卡塔尔; //剖析后的hdr
if($body){$bdy =
preg_replace(“/^./”,”..”,explode($lb,$body卡塔尔卡塔尔国;}//拆解深入分析后的Body

//例子echo send_mail(‘fuweng#im286.com’,’发信标题’,’发信内容’卡塔尔(قطر‎;

$smtp = array(
//1、EHLO,期望回到220要么250
array(“EHLO “.$loc_host.$lb,”220,250”,”HELO error: “),
//2、发送Auth Login,期望回到334
array(“AUTH LOGIN”.$lb,”334″,”AUTH error:”),
//3、发送经过Base64编码的客户名,期望回到334
array(base64_encode($smtp_acc).$lb,”334″,”AUTHENTIFICATION error :
“),
//4、发送经过Base64编码的密码,期望回到235
array(base64_encode($smtp_pass).$lb,”235″,”AUTHENTIFICATION error :
“));
//5、发送Mail From,期望回到250
$smtp[] = array(“MAIL FROM: <“.$from.”>”.$lb,”250″,”MAIL FROM
error: “);
//6、发送GL450cpt To。期待回到250
$smtp[] = array(“RCPT TO: <“.$to.”>”.$lb,”250″,”RCPT TO error:
“);
//7、发送DATA,期望回到354
$smtp[] = array(“DATA”.$lb,”354″,”DATA error: “);
//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($hdr as $h) {$smtp[] = array($h.$lb,””,””);}
//8.4、发送二个空行,甘休Header发送
$smtp[] = array($lb,””,””);
//8.5、发送信件主体
if($bdy) {foreach($bdy as $b) {$smtp[] =
array(base64_encode($b.$lb).$lb,””,””);}}
//9、发送“.”表示信件截至,期望回到250
$smtp[] = array(“.”.$lb,”250″,”DATA(end)error: “);
//10、发送Quit,退出,期望回到221
$smtp[] = array(“QUIT”.$lb,”221″,”QUIT error: “);

function send_mail($to, $subject = ‘No subject’, $body) { $loc_host =
“im286”; //发信计算机名,可随机 $smtp_acc = “fuweng#im286.com”;
//Smtp认证的客户名,相仿fuweng@im286.com,只怕fuweng
$smtp_pass=”password”; //Smtp认证的密码,平常等同pop3密码
$smtp_host=”smtp.im286.com”; //SMTP服务器地址,肖似 smtp.tom.com
$from=”fuweng#im286.com”; //发信人Email地址,你的投送信箱地址 $headers
= “Content-Type: text/plain;
charset=/”gb2312/”/r/nContent-Transfer-Encoding: base64″; $lb=”/r/n”;
//linebreak $hdr = explode($lb,$headers卡塔尔(قطر‎; //深入解析后的hdr if($body卡塔尔(قطر‎ {$bdy
= preg_replace(“/^/./”,”..”,explode($lb,$body卡塔尔国卡塔尔国;}//剖析后的Body

//张开smtp服务器端口
$fp=@fsockopen($smtp_host, 25);
if(!$fp) echo “<b>Error:</b> Cannot conect to
“.$smtp_host.”<br>”;
while($result = @fgets($fp, 1024)){if(substr($result,3,1) == ” “) {
break; }}

$smtp = array( //1、EHLO,期望回到220或然250 array(“EHLO
“.$loc_host.$lb,”220,250”,”HELO error: “卡塔尔, //2、发送Auth
Login,期望回到334 array(“AUTH LOGIN”.$lb,”334″,”AUTH error:”卡塔尔(قطر‎,
//3、发送经过Base64编码的客户名,期望回到334
array(base64_encode($smtp_acc卡塔尔.$lb,”334″,”AUTHENTIFICATION error : “卡塔尔(قطر‎,
//4、发送经过Base64编码的密码,期望回到235
array(base64_encode($smtp_pass卡塔尔.$lb,”235”,”AUTHENTIFICATION error :
“State of Qatar卡塔尔; //5、发送Mail From,期望回到250 $smtp[] = array(“MAIL FROM:
“.$lb,”250”,”MAIL FROM error: “State of Qatar; //6、发送奥迪Q7cpt To。期望回到250
$smtp[] = array(“RCPT TO: “.$lb,”250”,”RCPT TO error: “卡塔尔国;
//7、发送DATA,期望回到354 $smtp[] = array(“DATA”.$lb,”354″,”DATA
error: “); //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($hdr as $h卡塔尔(قطر‎ {$smtp[] =
array($h.$lb,””,””State of Qatar;} //8.4、发送叁个空行,截止Header发送 $smtp[] =
array($lb,””,””State of Qatar; //8.5、发送信件主体 if($bdyState of Qatar {foreach($bdy as $b卡塔尔(قطر‎{$smtp[] = array(base64_encode($b.$lb卡塔尔.$lb,””,””卡塔尔;}}
//9、发送“.”表示信件停止,期望回到250 $smtp[] =
array(“.”.$lb,”250″,”DATA(end卡塔尔error: “卡塔尔;
//10、发送Quit,退出,期望回到221 $smtp[] =
array(“QUIT”.$lb,”221″,”QUIT error: “);

$result_str=””;
//发送smtp数组中的命令/数据
foreach($smtp as $req){
//发送信息
@fputs($fp, $req[0]);
//如果急需吸取服务器重临音讯,则
if($req[1]){
//接受音信
while($result = @fgets($fp, 1024)){
if(substr($result,3,1) == ” “) { break; }
};
if (!strstr($req[1],substr($result,0,3))){
$result_str.=$req[2].$result.”<br>”;
}
}
}
//关闭连接
@fclose($fp);
return $result_str;
}
?>

//张开smtp服务器端口 $fp = @fsockopen($smtp_host, 25); if (!$fp) echo
Error: Cannot conect to “.$smtp_host.””; while($result =
@fgets($fp, 1024)){if(substr($result,3,1) == ” “) { break; }}
$result_str=””; //发送smtp数组中的命令/数据 foreach($smtp as $req卡塔尔国{
//发送信息 @fputs($fp, $req[0]State of Qatar; //假设须求收取服务器重临新闻,则
if($req[1]State of Qatar{ //选择新闻 while($result = @fgets($fp, 1024State of QatarState of Qatar{
if(substr($result,3,1State of Qatar == ” “State of Qatar { break; } }; if
(!strstr($req[1],substr($result,0,3))){
$result_str.=$req[2].$result.””; } } } //关闭连接 @fclose($fp卡塔尔;
return $result_str;}?>

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图