• 技术文章 >后端开发 >php教程

    aphex twin php win下Socket方式发邮件类

    2016-07-29 08:40:34原创374
    复制代码 代码如下:


    /*
    * php smtp发送邮件Scoket类
    * ZhozPhpSmtpSendMail.php
    * Created on 2008/09/02 zhoz.com
    * @author zhoz
    * v 1.72 update 2008/09/26 zhoz.Com
    */
    class ZhozPhpSmtpSendMail {
    //您的SMTP 服务器供应商,可以是域名或IP地址
    var $smtp = "";
    //SMTP需要要身份验证设值为 1, 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系。
    var $check = 1;
    //您的email帐号名称
    var $username = "";
    //您的email密码
    var $password = "";
    //此email 必需是发信服务器上的email
    var $s_from = "";
    /*
    * 功能:发信初始化设置
    * $from 你的发信衿魃系挠氏?
    * $password 你的邮箱密码
    * $smtp 您的SMTP 服务器供应商,可以是域名或IP地址
    * $check SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证
    */
    function ZhozPhpSmtpSendMail ( $from, $password, $smtp, $check = 1 ) {
    if( preg_match("/^[^\d\-_][\w\-]*[^\-_]@[^\-][a-zA-Z\d\-]+[^\-](\.[^\-][a-zA-Z\d\-]*[^\-])*\.[a-zA-Z]{2,3}/", $from ) ) {
    $this->username = substr( $from, 0, strpos( $from , "@" ) );
    $this->password = $password;
    $this->smtp = $smtp ? $smtp : $this->smtp;
    $this->check = $check;
    $this->s_from = $from;
    }
    }
    /*
    * 功能:发送邮件
    * $to 目标邮箱
    * $from 来源邮箱
    * $subject 邮件标题
    * $message 邮件内容
    */
    function zhoz_send ($to, $from, $subject, $message) {
    //连接服务器
    $fp = fsockopen ( $this->smtp, 25, $errno, $errstr, 60);
    if (!$fp ) return "联接服务器失败".__LINE__;
    set_socket_blocking($fp, true );
    $lastmessage=fgets($fp,512);
    if ( substr($lastmessage,0,3) != 220 ) return "错误信息1:$lastmessage".__LINE__;
    //HELO
    $yourname = "YOURNAME";
    if($this->check == "1") $lastact="EHLO ".$yourname."\r\n";
    else $lastact="HELO ".$yourname."\r\n";
    fputs($fp, $lastact);
    $lastmessage == fgets($fp,512);
    if (substr($lastmessage,0,3) != 220 ) return "错误信息2:$lastmessage".__LINE__;
    while (true) {
    $lastmessage = fgets($fp,512);
    if ( (substr($lastmessage,3,1) != "-") or (emptyempty($lastmessage)) )
    break;
    }
    //身份验证
    if ($this->check=="1") {
    //验证开始
    $lastact="AUTH LOGIN"."\r\n";
    fputs( $fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != 334) return "错误信息3:$lastmessage".__LINE__;
    //用户姓名
    $lastact=base64_encode($this->username)."\r\n";
    fputs( $fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != 334) return "错误信息4:$lastmessage".__LINE__;
    //用户密码
    $lastact=base64_encode($this->password)."\r\n";
    fputs( $fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != "235") return "错误信息5:$lastmessage".__LINE__;
    }
    //FROM:
    $lastact="MAIL FROM: <". $this->s_from . ">\r\n";
    fputs( $fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != 250) return "错误信息6:$lastmessage".__LINE__;
    //TO:
    $lastact="RCPT TO: <". $to ."> \r\n";
    fputs( $fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != 250) return "错误信息7:$lastmessage".__LINE__;
    //DATA
    $lastact="DATA\r\n";
    fputs($fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != 354) return "错误信息8:$lastmessage".__LINE__;
    //处理Subject头
    $head="Subject: $subject\r\n";
    $message = $head."\r\n".$message;
    //处理From头
    $head="From: $from\r\n";
    $message = $head.$message;
    //处理To头
    $head="To: $to\r\n";
    $message = $head.$message;
    //加上结束串
    $message .= "\r\n.\r\n";
    //发送信息
    fputs($fp, $message);
    $lastact="QUIT\r\n";
    fclose($fp);
    error_log("send over------->ok!!", 0);
    return true;
    }
    }
    ?>
    /*
    * php smtp发送邮件Scoket类
    * ZhozPhpSmtpSendMail.php
    * Created on 2008/09/02 zhoz.com
    * @author zhoz
    * v 1.72 update 2008/09/26 zhoz.Com
    */
    class ZhozPhpSmtpSendMail {
    //您的SMTP 服务器供应商,可以是域名或IP地址
    var $smtp = "";
    //SMTP需要要身份验证设值为 1, 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系。
    var $check = 1;
    //您的email帐号名称
    var $username = "";
    //您的email密码
    var $password = "";
    //此email 必需是发信服务器上的email
    var $s_from = "";
    /*
    * 功能:发信初始化设置
    * $from 你的发信服务器上的邮箱
    * $password 你的邮箱密码
    * $smtp 您的SMTP 服务器供应商,可以是域名或IP地址
    * $check SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证
    */
    function ZhozPhpSmtpSendMail ( $from, $password, $smtp, $check = 1 ) {
    if( preg_match("/^[^\d\-_][\w\-]*[^\-_]@[^\-][a-zA-Z\d\-]+[^\-](\.[^\-][a-zA-Z\d\-]*[^\-])*\.[a-zA-Z]{2,3}/", $from ) ) {
    $this->username = substr( $from, 0, strpos( $from , "@" ) );
    $this->password = $password;
    $this->smtp = $smtp ? $smtp : $this->smtp;
    $this->check = $check;
    $this->s_from = $from;
    }
    }
    /*
    * 功能:发送邮件
    * $to 目标邮箱
    * $from 来源邮箱
    * $subject 邮件标题
    * $message 邮件内容
    */
    function zhoz_send ($to, $from, $subject, $message) {
    //连接服务器
    $fp = fsockopen ( $this->smtp, 25, $errno, $errstr, 60);
    if (!$fp ) return "联接服务器失败".__LINE__;
    set_socket_blocking($fp, true );
    $lastmessage=fgets($fp,512);
    if ( substr($lastmessage,0,3) != 220 ) return "错误信息1:$lastmessage".__LINE__;
    //HELO
    $yourname = "YOURNAME";
    if($this->check == "1") $lastact="EHLO ".$yourname."\r\n";
    else $lastact="HELO ".$yourname."\r\n";
    fputs($fp, $lastact);
    $lastmessage == fgets($fp,512);
    if (substr($lastmessage,0,3) != 220 ) return "错误信息2:$lastmessage".__LINE__;
    while (true) {
    $lastmessage = fgets($fp,512);
    if ( (substr($lastmessage,3,1) != "-") or (empty($lastmessage)) )
    break;
    }
    //身份验证
    if ($this->check=="1") {
    //验证开始
    $lastact="AUTH LOGIN"."\r\n";
    fputs( $fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != 334) return "错误信息3:$lastmessage".__LINE__;
    //用户姓名
    $lastact=base64_encode($this->username)."\r\n";
    fputs( $fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != 334) return "错误信息4:$lastmessage".__LINE__;
    //用户密码
    $lastact=base64_encode($this->password)."\r\n";
    fputs( $fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != "235") return "错误信息5:$lastmessage".__LINE__;
    }
    //FROM:
    $lastact="MAIL FROM: <". $this->s_from . ">\r\n";
    fputs( $fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != 250) return "错误信息6:$lastmessage".__LINE__;
    //TO:
    $lastact="RCPT TO: <". $to ."> \r\n";
    fputs( $fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != 250) return "错误信息7:$lastmessage".__LINE__;
    //DATA
    $lastact="DATA\r\n";
    fputs($fp, $lastact);
    $lastmessage = fgets ($fp,512);
    if (substr($lastmessage,0,3) != 354) return "错误信息8:$lastmessage".__LINE__;
    //处理Subject头
    $head="Subject: $subject\r\n";
    $message = $head."\r\n".$message;
    //处理From头
    $head="From: $from\r\n";
    $message = $head.$message;
    //处理To头
    $head="To: $to\r\n";
    $message = $head.$message;
    //加上结束串
    $message .= "\r\n.\r\n";
    //发送信息
    fputs($fp, $message);
    $lastact="QUIT\r\n";
    fclose($fp);
    error_log("send over------->ok!!", 0);
    return true;
    }
    }
    ?>
    测试方法一样。
    运行代码查看代码复制代码打印关于
    /**
    * ZhozPhpSmtpSendMail.php
    * Created on 2008/09/02 zhoz.com
    * php smtp发送邮件类
    * 代替mail():因为它报错,我又不想
    */
    // 这里配置发信服务器信息,如果不改也可以正常使用:
    $from = 'zhoz@zhoz.com'; // 你的发信服务器上的邮箱
    $password = 'zhoz'; // 你的邮箱密码
    $smtp = 'smtp.zhoz.com'; // 您的SMTP 服务器供应商,可以是域名或IP地址
    // 类初始化
    $zhoz_obj = new ZhozPhpSmtpSendMail($from, $password, $smtp);
    // 发送开始
    $status = $zhoz_obj->zhoz_send("zhoz008@126.com", "zhoz@zhoz.com", "subject is zhoz", "body is zhoz.com");
    if($status) {
    echo $status;
    echo "no---------";
    } else {
    echo "send ok-----------------!";
    die;
    }
    // 结果当然是:send ok-----------------!
    ?>

    以上就介绍了aphex twin php win下Socket方式发邮件类,包括了aphex twin方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:aphex twin
    上一篇:nt authority system PHP 执行系统外部命令 system exec passthru 下一篇:sql server 2000下载 php Sql Server连接失败问题及解决办法

    相关文章推荐

    • PHP 文件操作函数(专题)• PHP教程.经验技巧(上)_PHP教程• 利用函数解决PHP数组删除方案分析_PHP教程• 学习PHP重定向的三种方法_PHP教程• PHP重定向的3种方式_PHP教程

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网