| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 | 
							- <?php
 
- namespace My;
 
- /**
 
-  * Email驱动
 
-  * @author   Devil
 
-  * @blog     http://gong.gg/
 
-  * @version  0.0.1
 
-  * @datetime 2017-01-10T21:51:08+0800
 
-  */
 
- class Email
 
- {
 
- 	private $interval_time;
 
- 	private $expire_time;
 
- 	private $key_code;
 
- 	public $error;
 
- 	private $obj;
 
- 	/**
 
- 	 * [__construct 构造方法]
 
- 	 * @author   Devil
 
- 	 * @blog     http://gong.gg/
 
- 	 * @version  0.0.1
 
- 	 * @datetime 2017-03-07T14:03:02+0800
 
- 	 * @param    [int]        $param['interval_time'] 	[间隔时间(默认30)单位(秒)]
 
- 	 * @param    [int]        $param['expire_time'] 	[到期时间(默认30)单位(秒)]
 
- 	 * @param    [string]     $param['key_prefix'] 		[验证码种存储前缀key(默认 空)]
 
- 	 */
 
- 	public function __construct($param = array())
 
- 	{
 
- 		$this->interval_time = isset($param['interval_time']) ? intval($param['interval_time']) : 30;
 
- 		$this->expire_time = isset($param['expire_time']) ? intval($param['expire_time']) : 30;
 
- 		$this->key_code = isset($param['key_prefix']) ? trim($param['key_prefix']).'_sms_code' : '_sms_code';
 
- 	}
 
- 	/**
 
- 	 * [EmailInit 邮件初始化]
 
- 	 * @author   Devil
 
- 	 * @blog     http://gong.gg/
 
- 	 * @version  0.0.1
 
- 	 * @datetime 2017-03-10T11:03:38+0800
 
- 	 */
 
- 	private function EmailInit()
 
- 	{
 
- 		// 引入邮件发送类库
 
- 		vendor("PHPMailer.class#phpmailer");
 
- 		// 建立邮件发送类  
 
- 		$this->obj = new \phpmailer();
 
- 		// 使用smtp方式发送
 
- 		$this->obj->IsSMTP();
 
- 		// 服务器host地址
 
- 		$this->obj->Host = MyC('common_email_smtp_host');
 
- 		//smtp验证功能;
 
- 		$this->obj->SMTPAuth = true;
 
- 		// 端口
 
- 		$this->obj->Port = MyC('common_email_smtp_port', 25, true);
 
- 		// 邮箱用户名
 
- 		$this->obj->Username =  MyC('common_email_smtp_name');
 
- 		// 邮箱密码
 
- 		$this->obj->Password = MyC('common_email_smtp_pwd');
 
- 		// 发件人
 
- 		$this->obj->From = MyC('common_email_smtp_account');
 
- 		// 发件人姓名
 
- 		$this->obj->FromName = MyC('common_email_smtp_send_name');
 
- 		// 是否开启html格式
 
- 		$this->obj->IsHTML(true);
 
- 		// 设置编码
 
- 		$this->obj->CharSet = C('DEFAULT_CHARSET');
 
- 	}
 
- 	/**
 
- 	 * [SendHtml html邮件发送]
 
- 	 * @author   Devil
 
- 	 * @blog     http://gong.gg/
 
- 	 * @version  0.0.1
 
- 	 * @datetime 2017-03-10T10:56:43+0800
 
- 	 * @param    [string]   $param['email'] 		[收件邮箱]
 
- 	 * @param    [string]   $param['content'] 		[内容]
 
- 	 * @param    [string]   $param['title'] 		[标题]
 
- 	 * @param    [string]   $param['code'] 			[验证码]
 
- 	 * @param    [string]   $param['username'] 		[收件人名称]
 
- 	 */
 
- 	public function SendHtml($param = array())
 
- 	{
 
- 		if(empty($param['email']))
 
- 		{
 
- 			$this->error = L('common_library_email_empty_error');
 
- 			return false;
 
- 		}
 
- 		if(empty($param['content']))
 
- 		{
 
- 			$this->error = L('common_library_content_empty_error');
 
- 			return false;
 
- 		}
 
- 		if(empty($param['title']))
 
- 		{
 
- 			$this->error = L('common_library_title_empty_error');
 
- 			return false;
 
- 		}
 
- 		// 是否频繁操作
 
- 		if(!$this->IntervalTimeCheck())
 
- 		{
 
- 			$this->error = L('common_prevent_harassment_error');
 
- 			return false;
 
- 		}
 
- 		// 验证码替换
 
- 		if(!empty($param['code']))
 
- 		{
 
- 			$param['content'] = str_replace('#code#', $param['code'], $param['content']);
 
- 		}
 
- 		// 邮件初始化
 
- 		$this->EmailInit();
 
- 		// 收件人地址,可以替换成任何想要接收邮件的email信箱,格式("收件人email","收件人姓名")
 
- 		$this->obj->AddAddress($param['email'], isset($param['username']) ? $param['username'] : $param['email']);
 
- 		// 邮件标题
 
- 		$this->obj->Subject = $param['title'];
 
- 		// 邮件内容
 
- 		$this->obj->Body = $param['content'];
 
- 		// 邮件正文不支持HTML的备用显示
 
- 		$this->obj->AltBody = strip_tags($param['content']);
 
- 		// 发送邮件
 
- 		if($this->obj->Send())
 
- 		{
 
- 			// 是否存在验证码
 
- 			if(!empty($param['code']))
 
- 			{
 
- 				$this->KindofSession($param['code']);
 
- 			}
 
- 			return true;
 
- 		} else {
 
- 			$this->error = $this->obj->ErrorInfo;
 
- 		}
 
- 		return false;
 
- 	}
 
- 	/**
 
- 	 * [KindofSession 种验证码session]
 
- 	 * @author   Devil
 
- 	 * @blog     http://gong.gg/
 
- 	 * @version  0.0.1
 
- 	 * @datetime 2017-03-07T14:59:13+0800
 
- 	 * @param    [string]      $code [验证码]
 
- 	 */
 
- 	private function KindofSession($code)
 
- 	{
 
- 		$_SESSION[$this->key_code] = array(
 
- 				'code' => $code,
 
- 				'time' => time(),
 
- 			);
 
- 	}
 
- 	/**
 
- 	 * [CheckExpire 验证码是否过期]
 
- 	 * @author   Devil
 
- 	 * @blog     http://gong.gg/
 
- 	 * @version  0.0.1
 
- 	 * @datetime 2017-03-05T19:02:26+0800
 
- 	 * @return   [boolean] [有效true, 无效false]
 
- 	 */
 
- 	public function CheckExpire()
 
- 	{
 
- 		if(isset($_SESSION[$this->key_code]))
 
- 		{
 
- 			$data = $_SESSION[$this->key_code];
 
- 			return (time() <= $data['time']+$this->expire_time);
 
- 		}
 
- 		return false;
 
- 	}
 
- 	/**
 
- 	 * [CheckCorrect 验证码是否正确]
 
- 	 * @author   Devil
 
- 	 * @blog     http://gong.gg/
 
- 	 * @version  0.0.1
 
- 	 * @datetime 2017-03-05T16:55:00+0800
 
- 	 * @param    [string] $code    [验证码(默认从post读取)]
 
- 	 * @return   [booolean]        [正确true, 错误false]
 
- 	 */
 
- 	public function CheckCorrect($code = '')
 
- 	{
 
- 		if(isset($_SESSION[$this->key_code]['code']))
 
- 		{
 
- 			if(empty($code) && isset($_POST['code']))
 
- 			{
 
- 				$code = trim($_POST['code']);
 
- 			}
 
- 			return ($_SESSION[$this->key_code]['code'] == $code);
 
- 		}
 
- 		return false;
 
- 	}
 
- 	/**
 
- 	 * [Remove 验证码清除]
 
- 	 * @author   Devil
 
- 	 * @blog     http://gong.gg/
 
- 	 * @version  0.0.1
 
- 	 * @datetime 2017-03-08T10:18:20+0800
 
- 	 * @return   [other] [无返回值]
 
- 	 */
 
- 	public function Remove()
 
- 	{
 
- 		if(isset($_SESSION[$this->key_code]))
 
- 		{
 
- 			unset($_SESSION[$this->key_code]);
 
- 		}
 
- 	}
 
- 	/**
 
- 	 * [IntervalTimeCheck 是否已经超过控制的间隔时间]
 
- 	 * @author   Devil
 
- 	 * @blog     http://gong.gg/
 
- 	 * @version  0.0.1
 
- 	 * @datetime 2017-03-10T11:26:52+0800
 
- 	 * @return   [booolean]        [已超过间隔时间true, 未超过间隔时间false]
 
- 	 */
 
- 	private function IntervalTimeCheck()
 
- 	{
 
- 		if(isset($_SESSION[$this->key_code]))
 
- 		{
 
- 			$data = $_SESSION[$this->key_code];
 
- 			return (time() > $data['time']+$this->interval_time);
 
- 		}
 
- 		return true;
 
- 	}
 
- }
 
- ?>
 
 
  |