网站地图    收藏   

主页 > 后端 > PHP语言 >

自己写的一个邮件发送类,可加附件

来源:未知    时间:2014-12-02 09:38 作者:xxadmin 阅读:

[导读] 自己写的一个邮件发送类,可加附件 这个类集成在我写的一个框架里,但是为了松耦合性所有的LIBRARY可以独立拿来立刻使用 里面的邮件发送类拿来分享给大家 最后还要说一下 暂时还没支...

自己写的一个邮件发送类,可加附件
这个类集成在我写的一个框架里,但是为了松耦合性所有的LIBRARY可以独立拿来立刻使用
里面的邮件发送类拿来分享给大家

最后还要说一下 暂时还没支持SSL 目前够用了  以后要用再说...
分享下代码

  1. <?php
  2. // +------------------------------------------------
  3. // | Travel - 1.1
  4. // +------------------------------------------------
  5. // | Copyright (c) 2014 All rights reserved.        
  6. // +------------------------------------------------
  7. // | Author: XiaoZhi <491434308@qq.com>     
  8. // +------------------------------------------------
  9.  
  10. // +-----------------------
  11. // | 电子邮件类
  12. // +-----------------------
  13.  
  14. /**
  15. * 使用方法:
  16. *         $test = $this->email->envelope($rc)     //填写信封,三个参数,第一个收件人必选,必须数组形式支持多个 2,3可选 数组形式支持多个  2-抄送       3-密送
  1. // +------------------------------------------------
  2. // | Travel - 1.0 Beat                              
  3. // +------------------------------------------------
  4. // | Copyright (c) 2014 All rights reserved.        
  5. // +------------------------------------------------
  6. // | Author: XiaoZhi <travelphp@163.com>     
  7. // +------------------------------------------------
  8.  
  9. // +-----------------------
  10. // | 电子邮件类
  11. // +-----------------------
  12.  
  13. /**
  14. * 使用方法:
  15. */
  16.  
  17. class Email{
  18.    
  19.     /*发送配置信息*/
  20.     public $smtp;           //SMTP地址
  21.     public $port;           //SMTP端口
  22.     public $username;       //发送者邮箱账号    
  23.     public $password;       //发送者邮箱密码
  24.     public $sender;         //发送者邮箱
  25.     public $sendname;       //发送者名称
  26.     public $charset;
  27.     /*接收配置信息*/
  28.     public $rc;             //邮件接收者 数组
  29.     public $cc;             //抄送 数组
  30.     public $bcc;            //密送 数组
  31.     public $subject;        //标题
  32.     public $content;        //内容
  33.     public $append;         //附件
  34.     public $content_mime;   //内容类型
  35.     
  36.     
  37.     /*相关属性*/
  38.     private $rcpt;          //接收者并集,用于设置RCPT
  39.     private $handle;        //socket连接句柄
  40.     private $request;       //请求命令行
  41.     private $errno;         //错误号
  42.     private $errstr;        //错误描述
  43.     
  44.     
  45.     /**
  46.      * 初始化SMTP服务器信息
  47.      * @param array $opts SMTP服务器配置,格式如下:
  48.      * Array(
  49.      *     [smtp]     =>  'smtp服务器地址',
  50.      *     [port]     =>  '端口号码',   
  51.      *     [username] =>  '发送者smtp登陆账号',
  52.      *     [password] =>  '登陆密码',
  53.      *     [sender]   =>  '发送者邮箱',
  54.      *     [sendname] =>  '发送者名称'
  55.      * )
  56.      */
  57.     public function __construct($opts) {
  58.         if(!is_array($opts)){
  59.             trigger_error('Email:初始化参数只接受数组形式',E_USER_ERROR);
  60.         }
  61.         if(empty($opts['smtp'])){
  62.             trigger_error('Email:SMTP服务器地址不能为空',E_USER_ERROR);
  63.         }
  64.         $this->smtp = $opts['smtp'];
  65.         if($this->is_email($opts['sender']) !== true){
  66.             trigger_error('Email:发送者邮箱不合法',E_USER_ERROR);
  67.         }
  68.         $this->sender = $opts['sender'];
  69.         $this->port = empty($opts['port']) ? 25 : $opts['port'];
  70.         $this->username = empty($opts['username']) ? null : $opts['username'];
  71.         $this->password = empty($opts['password']) ? null : $opts['password'];
  72.         $this->sendname = empty($opts['sendname']) ? '' : $opts['sendname'];
  73.         $this->socket_timeout = empty($opts['socket_timeout']) ? 3 : $opts['socket_timeout'];
  74.         $this->charset = empty($opts['charset']) ? 'UTF-8' : $opts['charset'];
  75.         $this->rc = array();
  76.         $this->cc = array();
  77.         $this->bcc = array();
  78.         $this->append = array();
  79.     }
  80.     
  81.     
  82.     /**
  83.      * 创建一个邮件信封
  84.      * @param array $rc  收件人地址列表
  85.      * @param array $cc  抄送地址列表
  86.      * @param array $bcc 密送地址列表
  87.      * @return object
  88.      */
  89.     public function envelope($rc,$cc=array(),$bcc=array()){
  90.         if(!is_array($rc) || empty($rc)){
  91.             trigger_error('收信人地址需要一个必须的数组参数,至少有一个正确的收信地址',E_USER_WARNING);
  92.         }else{
  93.             foreach($rc as $row){
  94.                 if($this->is_email($row)===true){
  95.                     array_push($this->rc,$row);
  96.                 }
  97.             }
  98.             $this->rc = array_unique($this->rc);
  99.         }
  100.         
  101.         if(!is_array($cc)){
  102.             trigger_error('抄送地址需要一个数组参数',E_USER_WARNING);
  103.         }else{
  104.             foreach($cc as $row){
  105.                 if($this->is_email($row)===true){
  106.                     array_push($this->cc,$row);
  107.                 }
  108.             }
  109.             $this->cc = array_unique($this->cc);
  110.         }
  111.         
  112.         if(!is_array($bcc)){
  113.             trigger_error('密送地址需要一个数组参数',E_USER_WARNING);
  114.         }else{
  115.             foreach ($bcc as $row){
  116.                 if($this->is_email($row)===true){

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论