<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Sendmail_model extends CI_Model {
	
	function __construct()
    {
        parent::__construct();
        $this->HT = $this->load->database('HT', TRUE);
    }
	
	function SendMailToTable($fromName,$fromEmail,$toName,$toEmail,$subject,$body)
	{
		if($this->validEmail($toEmail))
		{
			$data = array(
				"M_ReplyToName" => $fromName,	//回复人
				"M_ReplyToEmail" => $fromEmail,	//回复地址
				"M_ToName" => $toName,			//收件人名
				"M_ToEmail" => $toEmail,		//收件邮件地址
				"M_Title" => $subject,			//主题
				"M_Body" => $body,			//邮件正文
				"M_Web" => "CHT",			//所属站点
				"M_FromName" => "Chinahighlights.com",		//站点名称
				"M_State" => 0,
			);
			$this->HT->insert('Email_AutomaticSend',$data);
			return TRUE;
		}else{
			return FALSE;
		}
	}
	
	
	public function validEmail($email){
		$isValid = true;
		$atIndex = strrpos($email, "@");
		if (is_bool($atIndex) && !$atIndex){
			$isValid = false;
		}else{
			$domain = substr($email, $atIndex+1);
			$local = substr($email, 0, $atIndex);
			$localLen = strlen($local);
			$domainLen = strlen($domain);
			if ($localLen < 1 || $localLen > 64){
				// local part length exceeded
				$isValid = false;
			}else if ($domainLen < 1 || $domainLen > 255){
				// domain part length exceeded
				$isValid = false;
			}else if ($local[0] == '.' || $local[$localLen-1] == '.'){
				// local part starts or ends with '.'
				$isValid = false;
			}else if (preg_match('/\\.\\./', $local)){
				// local part has two consecutive dots
				$isValid = false;
			}else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)){
				// character not valid in domain part
				$isValid = false;
			}else if (preg_match('/\\.\\./', $domain)){
				// domain part has two consecutive dots
				$isValid = false;
			}else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',str_replace("\\\\","",$local))){
				// character not valid in local part unless 
				// local part is quoted
				if (!preg_match('/^"(\\\\"|[^"])+"$/',str_replace("\\\\","",$local))){
					$isValid = false;
				}
			}
			/*
			不检查是否有DNS解析
			if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))){
				// domain not found in DNS
				$isValid = false;
			}
			*/
		}
		return $isValid;
	}
	
}