php使用smtp服务发送邮件 首先-is_resource

PHP5 OOP编程中的代理与异常定制_PHP教程

...SPAN>if (! is_resource($this->result)) {  throw new Exception(

php使用smtp服务发送邮件 第一
define('SMTP_STATUS_NOT_CONNECTED', 1, true);define('SMTP_STATUS_CONNECTED',     2, true);class smtp{    var $connection;    var $recipients;    var $headers;    var $timeout;    var $errors;    var $status;    var $body;    var $from;    var $host;    var $port;    var $helo;    var $auth;    var $user;    var $pass;    /**     *  参数为一个数组     *  host        SMTP 服务器的主机       默认:localhost     *  port        SMTP 服务器的端口       默认:25     *  helo        发送HELO命令的名称      默认:localhost     *  user        SMTP 服务器的用户名     默认:空值     *  pass        SMTP 服务器的登陆密码   默认:空值     *  timeout     连接超时的时间          默认:5     *  @return  bool     */    function smtp($params = array())    {        if (!defined('CRLF'))        {            define('CRLF', "\r\n", true);        }        $this->timeout  = 10;        $this->status   = SMTP_STATUS_NOT_CONNECTED;        $this->host     = 'localhost';        $this->port     = 25;        $this->auth     = false;        $this->user     = '';        $this->pass     = '';        $this->errors   = array();        foreach ($params AS $key => $value)        {            $this->$key = $value;        }        $this->helo     = $this->host;        //  如果没有设置用户名则不验证        $this->auth = ('' == $this->user) ? false : true;    }    function connect($params = array())    {        if (!isset($this->status))        {            $obj = new smtp($params);            if ($obj->connect())            {                $obj->status = SMTP_STATUS_CONNECTED;            }            return $obj;        }        else        {            if (!empty($GLOBALS['_CFG']['smtp_ssl']))            {                $this->host = "ssl://" . $this->host;            }            $this->connection = @fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);            if ($this->connection === false)            {                $this->errors[] = 'Access is denied.';                return false;            }            @socket_set_timeout($this->connection, 0, 250000);            $greeting = $this->get_data();            if (is_resource($this->connection))            {                $this->status = 2;                return $this->auth ? $this->ehlo() : $this->helo();            }            else            {                log_write($errstr, __FILE__, __LINE__);                $this->errors[] = 'Failed to connect to server: ' . $errstr;                return false;            }        }    }    /**     * 参数为数组     * recipients      接收人的数组     * from            发件人的地址,也将作为回复地址     * headers         头部信息的数组     * body            邮件的主体     */    function send($params = array())    {        foreach ($params AS $key => $value)        {            $this->$key = $value;        }        if ($this->is_connected())        {            //  服务器是否需要验证            if ($this->auth)            {                if (!$this->auth())                {                    return false;                }            }            $this->mail($this->from);            if (is_array($this->recipients))            {                foreach ($this->recipients AS $value)                {                    $this->rcpt($value);                }            }            else            {                $this->rcpt($this->recipients);            }            if (!$this->data())            {                return false;            }            $headers = str_replace(CRLF . '.', CRLF . '..', trim(implode(CRLF, $this->headers)));            $body    = str_replace(CRLF . '.', CRLF . '..', $this->body);            $body    = substr($body, 0, 1) == '.' ? '.' . $body : $body;            $this->send_data($headers);            $this->send_data('');            $this->send_data($body);            $this->send_data('.');            return (substr($this->get_data(), 0, 3) === '250');        }        else        {            $this->errors[] = 'Not connected!';            return false;        }    }    function helo()    {        if (is_resource($this->connection)                AND $this->send_data('HELO ' . $this->helo)                AND substr($error = $this->get_data(), 0, 3) === '250' )        {            return true;        }        else        {            $this->errors[] = 'HELO command failed, output: ' . trim(substr($error, 3));            return false;        }    }    function ehlo()    {        if (is_resource($this->connection)                AND $this->send_data('EHLO ' . $this->helo)                AND substr($error = $this->get_data(), 0, 3) === '250' )        {            return true;        }        else        {            $this->errors[] = 'EHLO command failed, output: ' . trim(substr($error, 3));            return false;        }    }    function auth()    {        if (is_resource($this->connection)                AND $this->send_data('AUTH LOGIN')                AND substr($error = $this->get_data(), 0, 3) === '334'                AND $this->send_data(base64_encode($this->user))            // Send username                AND substr($error = $this->get_data(),0,3) === '334'                AND $this->send_data(base64_encode($this->pass))            // Send password                AND substr($error = $this->get_data(),0,3) === '235' )        {            return true;        }        else        {            $this->errors[] = 'AUTH command failed: ' . trim(substr($error, 3));            return false;        }    }    function mail($from)    {        if ($this->is_connected()            AND $this->send_data('MAIL FROM:<' . $from . '>')            AND substr($this->get_data(), 0, 2) === '250' )        {            return true;        }        else        {            return false;        }    }    function rcpt($to)    {        if ($this->is_connected()            AND $this->send_data('RCPT TO:<' . $to . '>')            AND substr($error = $this->get_data(), 0, 2) === '25')        {            return true;        }        else        {            $this->errors[] = trim(substr($error, 3));            return false;        }    }    function data()    {        if ($this->is_connected()            AND $this->send_data('DATA')            AND substr($error = $this->get_data(), 0, 3) === '354' )        {            return true;        }        else        {            $this->errors[] = trim(substr($error, 3));            return false;        }    }    function is_connected()    {        return (is_resource($this->connection) AND ($this->status === SMTP_STATUS_CONNECTED));    }    function send_data($data)    {        if (is_resource($this->connection))        {            return fwrite($this->connection, $data . CRLF, strlen($data) + 2);        }        else        {            return false;        }    }    function get_data()    {        $return = '';        $line   = '';        if (is_resource($this->connection))        {            while (strpos($return, CRLF) === false OR $line{3} !== ' ')            {                $line    = fgets($this->connection, 512);                $return .= $line;            }            return trim($return);        }        else        {            return '';        }    }    /**     * 获得最后一个错误信息     *     * @access  public     * @return  string     */    function error_msg()    {        if (!empty($this->errors))        {            $len = count($this->errors) - 1;            return $this->errors[$len];        }        else        {            return '';        }    }}?>

PHP面向对象编程中的代理与异常定制(1)_PHP教程

...SPAN>if (! is_resource($this->result)) {  throw new Exception(

采用PEAR来缓冲PHP程序二_PHP教程

...options); $this->expires = $expires; } function _MySQL_Query_Cache() { if (is_resource($this->connection)) { mysql_close($this->connection); } $thi

php多线程实现多进程 跨平台的一例代码

...d_lock_id($key)); if (isset($lock[$key])) { if (is_resource($lock[$key][0])) fclose($lock[$key][0]); unlink($lock[$ke

PHP5 OOP编程之代理与定制异常_PHP教程

.......  public function fetch_array()  {   if (! is_resource($this->result)) {    throw new Exception(Query not executed.);   }   

php发送邮件方法二1.(SMTP传输SMTP类)_PHP教程

... $greeting = $this->get_data(); if(is_resource($this->connection)) { $this->status = 2;

popen如何实现多进程并发执行,循环里的pclose会等待进程完毕再进行下一次循环

...间".date('Y-m-d H:i:s')."\n"; $resource = popen($command,'r'); if(is_resource($resource)){ $success++; pclose($resource);//下

php mysql数据库类(兼容php4与php5)

... } return $Id; } function _Dbs_Close() { if (is_resource($this->Id)) { return @mysql_close($this->Id);

php a simple smtp class_php实例

...onnection, 0, 250000); $greeting = $this->get_data(); if(is_resource($this->connection)) { $this->status = 2; return $this->auth ? $this->ehlo

关于is_resource()方法的问题问题

...sqli后也能够得到结果现在问题原因是换成mysqli后,is_resource()方法判断mysqli结果集的结果为false 上源代码 代码出自某商城程序 static function sqlOfUpdate(&$rs, $data, $InsertIfNoResult = false

php 图片操作类(图片加水印)

...ean */ function changeSize($width, $height = -1) { if(!is_resource($this->imageResource)) { exit('不能改变图片的尺寸,可能是你没有