龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 自己写的一个php发送邮件的类(smtp协议)

时间:2014-08-19 03:07来源:网络整理 作者:网络 点击:
分享到:
自己写的一个php发送邮件的类(smtp协议) [代码片段(76行)]
<?php
class Smtp{
    private $Smtp      = 'smtp.qq.com'; //邮件服务器
    private $PORS      = 25;            //邮件服务器端口
    private $LoginMail = '';            //邮件登陆用户账户
    private $LoginPass = '';            //邮件登陆用户密码
    private $MailTo    = '';            //接受邮件用户
    private $MailFrom  = '';            //邮件发送人
    private $MailCome  = '';            //接受回复邮件账户
    private $Title     = '测试邮件主题';  //邮件主题
    private $Body      = '测试邮件内容';  //邮件主体内容
    private $Mesg      = '邮件发送成功';  //邮件发送结果

    public function smtp( $Smtp = '' ){ $this -> Smtp = $Smtp; return $this; }
    public function pors( $pors = 25 ){ $this -> PORS = $pors; return $this; }
    public function login( $login = '' ) { $this -> LoginMail = $login; return $this; }
    public function pass( $pass = '' ){ $this -> LoginPass = $pass; return $this; }
    public function mails( $mail = '' ) { $this -> MailTo = $mail; return $this; }
    public function from( $form = '' ) { $this -> MailFrom = $form; return $this; }
    public function come( $come = '' ) { $this -> MailCome = $come; return $this; }
    public function title( $title = '' ) { $this -> Title = $title; return $this; }
    public function body( $body = '' ) { $this -> Body = $body; return $this; }

    public function send(){
          $fp     = @fsockopen( $this->Smtp, $this->PORS);
          @set_socket_blocking($fp, true);
          $Server =  @fgets($fp, 512);
          $this->Mesg = !preg_match('/^220/i', $Server) ? '邮件服务器连接失败' : $this->Mesg;

          @fputs($fp, 'HELO phpsetmail' . "\\r\\n");
          $Server = @fgets($fp, 2000);
          $this->Mesg = !preg_match('/^250/i', $Server) ? '与服务器会话失败' : $this->Mesg;

          @fputs($fp, 'AUTH LOGIN' . "\\r\\n");
          $Server = @fgets($fp, 2000);
          $this->Mesg = !preg_match('/^334/i', $Server) ? '请求与服务器进行用户验证失败' : $this->Mesg;

          @fputs($fp, base64_encode( $this->LoginMail ) . "\\r\\n");
          $Server = @fgets($fp, 2000);
          $this->Mesg = !preg_match('/^334/i', $Server) ? '用户验证失败' : $this->Mesg;

          @fputs($fp, base64_encode( $this->LoginPass ) . "\\r\\n");
          $Server = @fgets($fp, 2000);
          $this->Mesg = !preg_match('/^235/i', $Server) ? '用户验证失败' : $this->Mesg;

          @fputs($fp, 'MAIL FROM:' . $this->LoginMail . "\\r\\n");
          $Server = @fgets($fp, 2000);
          $this->Mesg = !preg_match('/^250/i', $Server) ? '发送用户验证失败' : $this->Mesg;

          @fputs($fp, 'RCPT TO:' . $this->MailTo . "\\r\\n");
          $Server = @fgets($fp, 2000);
          $this->Mesg = !preg_match('/^250/i', $Server) ? '接受用户名验证失败' : $this->Mesg;

          @fputs($fp, 'DATA' . "\\r\\n");
          $Server = @fgets($fp, 2000);
          $this->Mesg = !preg_match('/^354/i', $Server) ? '请求与服务器发送邮件数据失败' : $this->Mesg;

          @fputs($fp, 'From:' . $this->MailCome ."\\r\\n");
          @fputs($fp, 'Subject:' . $this->Title . "\\r\\n");
          @fputs($fp, 'To:' . $this->MailTo . "\\r\\n");
          @fputs($fp, "\\r\\n");
          @fputs($fp, $this->Body . "\\r\\n");
          @fputs($fp, '.' . "\\r\\n");

          $Server = @fgets($fp, 2000);
          $this->Mesg = !preg_match('/^250/i', $Server) ? '邮件发送失败' : $this->Mesg;

          @@fputs($fp, 'QUIT' . "\\r\\n");
          @fclose($fp);
         return $this->Mesg;
    }

}
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接