| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | <?php/** * FecShop file. * * @link http://www.fecshop.com/ * @copyright Copyright (c) 2016 FecShop Software LLC * @license http://www.fecshop.com/license/ */namespace fec\helpers;use Yii; /** * @author Terry Zhao <2358269014@qq.com> * @since 1.0 */class CEmail{	public static function getMailer(){		return  Yii::$app->mailer;	}			public static function getMailOb($from,$to,$title,$content,$is_html=1){		if(!$from || !$to || !$title || !$content){			return false;		} 		# 验证邮箱格式是否正确		if(!self::email_validation($from)){			return false;		}		# 验证邮箱格式是否正确		if(!self::email_validation($to)){			return false;		}		$m 	= 	self::getMailer()->compose()				->setFrom($from)				->setTo($to)				->setSubject($title);		if($is_html){			$m->setHtmlBody($content);		}else{			$m->setTextBody($content);		}		return $m;		}		# 1.发送一封邮件	# $from $to $title $content 不能为空。	public static function sendMail($from,$to,$title,$content,$is_html=1){		$m = self::getMailOb($from,$to,$title,$content,$is_html);		if($m){			$m->send();			return true;		}				return false;	}		# 2.批量发送邮件	/*	参数:数组格式如下:	$arr = [		[			'from' 	=>'zqy234@126.com',			'to' 	=>'3727@gmail.com',			'title' =>'my111',			'content' =>'<div>111</div>',			'is_html' => 1,		],		[			'from' 	=>'zqy234@126.com',			'to' 	=>'terry@gmail.com',			'title' =>'to tototto',			'content' =>'hello ddd',			'is_html' => 0,		],	];	 forece 代表多送多个邮件,其中一个邮件的格式或者数据为空的情况下,其他符合	 标准的邮件是否发送	 force=1,代表其他符合格式的邮件发送	 force=0,如果某个邮件内容有问题,全部不发送。	*/	public static function sendMultipleEmail($arr,$forece=1){				$messages = [];		foreach ($arr as $one) {			$from 		= isset($one['from']) ? $one['from'] : '';			$to 		= isset($one['to']) ? $one['to'] : '';			$title 		= isset($one['title']) ? $one['title'] : '';			$content 	= isset($one['content']) ? $one['content'] : '';			$is_html 	= isset($one['is_html']) ? $one['is_html'] : 0;						$m = self::getMailOb($from,$to,$title,$content,$is_html);			if(!$m){				if(!$forece){ #如果数据格式有问题,force为0,则全部不发送					return false;				}			}else{				$messages[] = $m;			}		}		if(!empty($messages)){			$count = count($messages);			self::getMailer()->sendMultiple($messages);			# 返回发送的邮件的个数。			return $count;		}		return false;	}				# 3.验证邮箱格式是否正确	public static  function email_validation($mail)	{		if($mail != '')		{			if(preg_match("/^[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[@]{1}[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[.]{1}[A-Za-z]{2,5}$/", $mail))			{				return true;			}			else			{				return false;			}		}		else		{			return false;		}	}	}
 |