Send.class.php 4.3 KB
<?php
class Lib_Mail_Send
{
    /**
     * Send对象
     *
     * @var Util_Mail_Phpmailer
     */
    private $_mailer = null ;
    
    /**
     * 模板目录(默认为当前目录下的templates目录)
     *
     * @var unknown_type
     */
    public $template_dir = '' ;
    /**
     * 模板文件后缀
     *
     * @var unknown_type
     */
    public $template_suffix = '.phtml' ;
    
    /**
     * 邮件配置
     *
     * @var unknown_type
     */
    public $mail_config = array(
        'Username'	=>    'no-reply', // 邮局用户名(请填写完整的email地址)
        'Password'	=>    'yoho!@#smail@cn', //邮局密码
        'From'		=>    'no-reply@yoho.cn',//邮件发送者email地址
        'Host'		=>    'smail.yoho.cn',//企业邮局域名
        'SMTPAuth'	=>    true,// 启用SMTP验证功能
        'CharSet'	=>    'utf-8',//设置邮件编码
    );
    
    /**
     * 构造函数-初始化配置
     *
     * @param string $template_dir 模板所有的目录(可省略,默认为当前的templates目录)
     */
    public function __construct($template_dir = '')
    {
        $this->_mailer = new Util_Mail_Phpmailer();
        $this->setConfig($this->mail_config);
        $this->_mailer->IsHTML(true);
        if ($template_dir == '') 
        {
        	$template_dir = dirname(__FILE__).DS.'templates';
        }
        $this->template_dir = $template_dir ;
    }
    
    /**
     * 设置邮件配置
     *
     * @param array $config 配置 ,详细参数见成员变量
     * @return void
     */
    public function setConfig ($config)
    {
        if (is_array($config))
        {
            $this->mail_config = array_merge($this->mail_config,$config);
        }
        $this->_init();
    }
    
    /**
     * 初始化邮件配置
     *
     * @return void
     */
    private function _init ()
    {
        foreach ($this->mail_config as $name => $value)
        {
            if ($value !== '')
            {
                $this->_mailer->$name = $value ;
            }
        }
    }
    /**
     * 是否使用SMTP方式发送
     *
     * @param unknown_type $boolean
     * @return void
     */
    public function isSmtp()
    {
        $this->_mailer->IsSMTP();
    }
    /**
     * 指定是否使用HTML格式 (默认使用HTML发送)
     *
     * @param boolean $boolean
     * @return void
     */
    public function isHtml($boolean = true)
    {
        //是否使用HTML格式
        $this->_mailer->IsHTML($boolean);  
    }
    
    /**
     * 发送邮件
     *
     * @param string $subject 标题
     * @param string $tpl 模板
     * @param string $tomail 要发送的邮箱地址
     * @param string $params 模板所对应的参数
     * @param string $fromAlias 别名
     * @return boolean
     */
    public function send($subject, $tpl, $tomail, $params,$fromAlias = 'YOHO')
    {
        $emailMatch = "/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$/i";
        //正确的邮箱
        $rightEmail = '';
        if(preg_match($emailMatch,$tomail) && strlen($subject))
        {
            $rightEmail = $tomail;
        }
        else
        {
            return false;
        }
        //收件人地址,格式是AddAddress("收件人email","收件人姓名")
        $this->_mailer->AddAddress($rightEmail,'');
        //发送者别名
        $this->_mailer->FromName = $fromAlias;
        //邮件标题,设置标题编码
        $this->_mailer->Subject = "=?UTF-8?B?".base64_encode($subject) ."?=";
        //邮件内容
        $content = $this->getContent($tpl,$params) ;
        //设置内容
        $this->_mailer->Body = $content;
        $this->isSmtp();
        //$this->_mailer->SMTPDebug = true ;
        //邮件发送成功
        $send = $this->_mailer->Send() ;
        if($send === true)
        {
            //清除发送人
            $this->_mailer->ClearAddresses();
            return true;
        }
        else
        {
            return false;
        }
    }
    
    /**
     * 获取模板
     *
     * @param unknown_type $tpl
     * @param unknown_type $parames
     * @return unknown
     */
    public function getContent($tpl,$parames)
    {
        ob_start();
        extract($parames);
        include  $this->template_dir . DS .$tpl.$this->template_suffix ;
        $content = ob_get_clean();
        return $content ;
    }
    
}