欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php smtp发送邮件的函数

程序员文章站 2022-04-08 16:12:36
...
php实现的smtp发送邮件的函数,带smtp验证功能,有详细的注释,适合研究smtp发信的朋友参考。

完整代码如下。

".$lb,"250","MAIL FROM error: ");
      //6、发送Rcpt 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: ".$deliver.$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); return $result_str; } //调用示例 #echo send_mail($_POST["email"],$tosubject,$_POST["errortext"]); echo send_mail('mail_001@126.com','脚本学堂,欢迎大家的光临','程序员之家_bbs.it-home.org'); echo time(); ?>