Advertisement
Guest User

Untitled

a guest
Nov 1st, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.10 KB | None | 0 0
  1. <?php
  2. $true = true;
  3. class SendMailSmtpClass {
  4.  
  5. /**
  6. *
  7. * @var string $smtp_username - §Э§а§Ф§Ъ§Я
  8. * @var string $smtp_password - §б§С§в§а§Э§о
  9. * @var string $smtp_host - §з§а§г§д
  10. * @var string $smtp_from - §а§д §Ь§а§Ф§а
  11. * @var integer $smtp_port - §б§а§в§д
  12. * @var string $smtp_charset - §Ь§а§Х§Ъ§в§а§У§Ь§С
  13. *
  14. */
  15. public $smtp_username;
  16. public $smtp_password;
  17. public $smtp_host;
  18. public $smtp_from;
  19. public $smtp_port;
  20. public $smtp_charset;
  21.  
  22. public function __construct($smtp_username, $smtp_password, $smtp_host, $smtp_from, $smtp_port = 25, $smtp_charset = "utf-8") {
  23. $this->smtp_username = $smtp_username;
  24. $this->smtp_password = $smtp_password;
  25. $this->smtp_host = $smtp_host;
  26. $this->smtp_from = $smtp_from;
  27. $this->smtp_port = $smtp_port;
  28. $this->smtp_charset = $smtp_charset;
  29. }
  30.  
  31. /**
  32. * §°§д§б§в§С§У§Ь§С §б§Ъ§г§о§Ю§С
  33. *
  34. * @param string $mailTo - §б§а§Э§е§й§С§д§Ц§Э§о §б§Ъ§г§о§Ю§С
  35. * @param string $subject - §д§Ц§Ю§С §б§Ъ§г§о§Ю§С
  36. * @param string $message - §д§Ц§Э§а §б§Ъ§г§о§Ю§С
  37. * @param string $headers - §Щ§С§Ф§а§Э§а§У§Ь§Ъ §б§Ъ§г§о§Ю§С
  38. *
  39. * @return bool|string §Ј §г§Э§е§й§С§Ъ §а§д§б§в§С§У§Ь§Ъ §У§Ц§в§Я§Ц§д true, §Ъ§Я§С§й§Ц §д§Ц§Ь§г§д §а§к§Ъ§Т§Ь§Ъ *
  40. */
  41. function send($mailTo, $subject, $message, $headers) {
  42. $contentMail = "Date: " . date("D, d M Y H:i:s") . " UT\r\n";
  43. $contentMail .= 'Subject: =?' . $this->smtp_charset . '?B?' . base64_encode($subject) . "=?=\r\n";
  44. $contentMail .= $headers . "\r\n";
  45. $contentMail .= $message . "\r\n";
  46.  
  47. try {
  48. if(!$socket = @fsockopen($this->smtp_host, $this->smtp_port, $errorNumber, $errorDescription, 30)){
  49. throw new Exception($errorNumber.".".$errorDescription);
  50. }
  51. if (!$this->_parseServer($socket, "220")){
  52. throw new Exception('Connection error');
  53. }
  54.  
  55. $server_name = $_SERVER["SERVER_NAME"];
  56. fputs($socket, "HELO $server_name\r\n");
  57. if (!$this->_parseServer($socket, "250")) {
  58. fclose($socket);
  59. throw new Exception('Error of command sending: HELO');
  60. }
  61.  
  62. fputs($socket, "AUTH LOGIN\r\n");
  63. if (!$this->_parseServer($socket, "334")) {
  64. fclose($socket);
  65. throw new Exception('Autorization error');
  66. }
  67.  
  68.  
  69.  
  70. fputs($socket, base64_encode($this->smtp_username) . "\r\n");
  71. if (!$this->_parseServer($socket, "334")) {
  72. fclose($socket);
  73. throw new Exception('Autorization error');
  74. }
  75.  
  76. fputs($socket, base64_encode($this->smtp_password) . "\r\n");
  77. if (!$this->_parseServer($socket, "235")) {
  78. fclose($socket);
  79. throw new Exception('Autorization error');
  80. }
  81.  
  82. fputs($socket, "MAIL FROM: <".$this->smtp_username.">\r\n");
  83. if (!$this->_parseServer($socket, "250")) {
  84. fclose($socket);
  85. throw new Exception('Error of command sending: MAIL FROM');
  86. }
  87.  
  88. $mailTo = ltrim($mailTo, '<');
  89. $mailTo = rtrim($mailTo, '>');
  90. fputs($socket, "RCPT TO: <" . $mailTo . ">\r\n");
  91. if (!$this->_parseServer($socket, "250")) {
  92. fclose($socket);
  93. throw new Exception('Error of command sending: RCPT TO');
  94. }
  95.  
  96. fputs($socket, "DATA\r\n");
  97. if (!$this->_parseServer($socket, "354")) {
  98. fclose($socket);
  99. throw new Exception('Error of command sending: DATA');
  100. }
  101.  
  102. fputs($socket, $contentMail."\r\n.\r\n");
  103. if (!$this->_parseServer($socket, "250")) {
  104. fclose($socket);
  105. throw new Exception("E-mail didn't sent");
  106. }
  107.  
  108. fputs($socket, "QUIT\r\n");
  109. fclose($socket);
  110. } catch (Exception $e) {
  111. return $e->getMessage();
  112. }
  113. return true;
  114. }
  115.  
  116. private function _parseServer($socket, $response) {
  117. while (@substr($responseServer, 3, 1) != ' ') {
  118. if (!($responseServer = fgets($socket, 256))) {
  119. return false;
  120. }
  121. }
  122. if (!(substr($responseServer, 0, 3) == $response)) {
  123. return false;
  124. }
  125. return true;
  126.  
  127. }
  128. }
  129. class mail
  130. {
  131. public static $site_name = "";
  132. public static $from = "";
  133. public static $to = "";
  134. public static $subject = "";
  135. public static $message = "";
  136. public static $header = "";
  137. public static $additional_parameters = null;
  138. public static $error = "";
  139. public static $bcc = array ();
  140. public static $mail_headers = "";
  141. public static $html_mail = 0;
  142. public static $charset = 'UTF-8';
  143.  
  144. public static $smtp_fp = false;
  145. public static $smtp_msg = "";
  146. public static $smtp_port = "";
  147. public static $smtp_host = "localhost";
  148. public static $smtp_user = "";
  149. public static $smtp_pass = "";
  150. public static $smtp_code = "";
  151. public static $smtp_mail = "";
  152. public static $smtp_helo = "";
  153. public static $send_error = false;
  154.  
  155. public static $eol = "\n";
  156.  
  157. public static $mail_method = 'aviras';
  158.  
  159. public static function gamepl_mail ()
  160. {
  161. global $conf;
  162. self::$mail_method = $conf['mail_type'];
  163.  
  164. self::$from = $conf['mail'];
  165. self::$site_name = $_SERVER['HTTP_HOST'];
  166. self::$smtp_mail = trim($conf['smtp']['mail']) ? trim($conf['smtp']['mail']) : '';
  167. self::$smtp_helo = trim($conf['smtp']['helo']) ? trim($conf['smtp']['helo']) : 'HELO';
  168.  
  169. self::$smtp_host = $conf['smtp']['server'];
  170. self::$smtp_port = intval( $conf['smtp']['port'] );
  171. self::$smtp_user = $conf['smtp']['mail'];
  172. self::$smtp_pass = $conf['smtp']['pass'];
  173.  
  174. self::$html_mail = true;
  175. }
  176.  
  177. public static function compile_headers ()
  178. {
  179.  
  180. self::$subject = "=?" . self::$charset . "?b?" . base64_encode ( self::$subject ) . "?=";
  181.  
  182. if ( self::$site_name ) {
  183. $from = "=?" . self::$charset . "?b?" . base64_encode ( self::$site_name ) . "?=";
  184. } else {
  185. $from = "";
  186. }
  187.  
  188. if ( self::$html_mail ) {
  189. self::$mail_headers .= "MIME-Version: 1.0" . self::$eol;
  190. self::$mail_headers .= "Content-type: text/html; charset=\"" . self::$charset . "\"" . self::$eol;
  191. } else {
  192. self::$mail_headers .= "MIME-Version: 1.0" . self::$eol;
  193. self::$mail_headers .= "Content-type: text/plain; charset=\"" . self::$charset . "\"" . self::$eol;
  194. }
  195.  
  196. if ( self::$mail_method != 'smtp' ) {
  197.  
  198. if ( count ( self::$bcc ) ) {
  199. self::$mail_headers .= "Bcc: " . implode ( "," , self::$bcc ) . self::$eol;
  200. }
  201.  
  202. } else {
  203.  
  204. self::$mail_headers .= "Subject: " . self::$subject . self::$eol;
  205.  
  206. if ( self::$to ) {
  207.  
  208. self::$mail_headers .= "To: " . self::$to . self::$eol;
  209. }
  210.  
  211. }
  212.  
  213. self::$mail_headers .= "From: \"" . $from . "\" <" . self::$from . ">" . self::$eol;
  214.  
  215. self::$mail_headers .= "Return-Path: <" . self::$from . ">" . self::$eol;
  216. self::$mail_headers .= "X-Priority: 3" . self::$eol;
  217. self::$mail_headers .= "X-MSMail-Priority: Normal" . self::$eol;
  218. self::$mail_headers .= "X-Mailer: DLE CMS PHP" . self::$eol;
  219.  
  220. }
  221.  
  222. public static function send ( $to , $subject , $message )
  223. {
  224. self::gamepl_mail ();
  225. self::$to = preg_replace ( "/[ \t]+/" , "" , $to );
  226. self::$from = preg_replace ( "/[ \t]+/" , "" , self::$from );
  227.  
  228. self::$to = preg_replace ( "/,,/" , "," , self::$to );
  229. self::$from = preg_replace ( "/,,/" , "," , self::$from );
  230.  
  231. if (!$to) {
  232. exit("Error: E-Mail to required!");
  233. }
  234.  
  235.  
  236.  
  237. if (!$subject) {
  238. exit("Error: E-Mail subject required!");
  239. }
  240.  
  241. if (!$message) {
  242. exit("Error: E-Mail message required!");
  243. }
  244.  
  245. if (is_array($t)) {
  246. $to = implode(',', $to);
  247. }
  248.  
  249. $header = "";
  250.  
  251. $header .= "MIME-Version: 1.0\n";
  252.  
  253. $header .= "From: " . self::$from . "<" . self::$eol . ">\n";
  254. $header .= "Reply-To: " . self::$from . "\n";
  255. $header .= "X-Mailer: PHP Mailer\n";
  256. $header .= "Return-Path: " . self::$from . "\n";
  257. $header .= "Content-Type: text/plain; charset=\"utf-8\"\n";
  258. $mailSMTP = new
  259. SendMailSmtpClass(self::$smtp_user, self::$smtp_pass, 'ssl://smtp.mail.ru', 'Admin', 465);
  260. return $mailSMTP->send($to, $subject, $message, $header);
  261. }
  262. public static function aviras_send ( $to , $subject , $message )
  263. {
  264. global $conf;
  265. $d['mail'] = str_replace('/','-',base64_encode($to));
  266. $d['title'] = str_replace('/','-',base64_encode($subject));
  267. $d['msg'] = str_replace('/','-',base64_encode($message));
  268. $d['send'] = str_replace('/','-',base64_encode( $conf['mail']));
  269. $d['domain'] = str_replace('/','-',base64_encode( $conf['domain']));
  270. $data = str_replace('/','-',base64_encode(json_encode($d,JSON_UNESCAPED_UNICODE)));
  271. @file_get_contents('http://gamepl.ru/mailes/send/'.api::$token.'/?body='.$data);
  272. }
  273. public static function smtp_get_line ()
  274. {
  275. self::$smtp_msg = "";
  276.  
  277. while ( $line = fgets ( self::$smtp_fp , 515 ) ) {
  278. self::$smtp_msg .= $line;
  279.  
  280. if ( substr ( $line , 3 , 1 ) == " " ) {
  281. break;
  282. }
  283. }
  284. }
  285.  
  286. public static function smtp_send ()
  287. {
  288. ini_set ( 'default_socket_timeout' , '1' );
  289. self::$smtp_fp = @fsockopen ( self::$smtp_host , intval ( self::$smtp_port ) , $errno , $errstr , 30 );
  290.  
  291. if ( ! self::$smtp_fp ) {
  292. self::smtp_error ( "Could not open a socket to the SMTP server" );
  293.  
  294. return;
  295. }
  296.  
  297. self::smtp_get_line ();
  298.  
  299. self::$smtp_code = substr ( self::$smtp_msg , 0 , 3 );
  300.  
  301. if ( self::$smtp_code == 220 ) {
  302. $data = self::smtp_crlf_encode ( self::$mail_headers . "\n" . self::$message );
  303.  
  304. self::smtp_send_cmd ( self::$smtp_helo . " " . self::$smtp_host );
  305.  
  306. if ( self::$smtp_code != 250 ) {
  307. self::smtp_error ( self::$smtp_helo . " error" );
  308.  
  309. return;
  310. }
  311.  
  312. if ( self::$smtp_user and self::$smtp_pass ) {
  313. self::smtp_send_cmd ( "AUTH LOGIN" );
  314.  
  315. if ( self::$smtp_code == 334 ) {
  316. self::smtp_send_cmd ( base64_encode ( self::$smtp_user ) );
  317.  
  318. if ( self::$smtp_code != 334 ) {
  319. self::smtp_error ( "Username not accepted from the server" );
  320.  
  321. return;
  322. }
  323.  
  324. self::smtp_send_cmd ( base64_encode ( self::$smtp_pass ) );
  325.  
  326. if ( self::$smtp_code != 235 ) {
  327. self::smtp_error ( "Password not accepted from the SMTP server" );
  328.  
  329. return;
  330. }
  331. } else {
  332. self::smtp_error ( "This SMTP server does not support authorisation" );
  333.  
  334. return;
  335. }
  336. }
  337.  
  338. if ( ! self::$smtp_mail ) {
  339. self::$smtp_mail = self::$from;
  340. }
  341.  
  342. self::smtp_send_cmd ( "MAIL FROM:<" . self::$smtp_mail . ">" );
  343.  
  344. if ( self::$smtp_code != 250 ) {
  345. self::smtp_error ( "Incorrect FROM address: self::smtp_mail" );
  346.  
  347. return;
  348. }
  349.  
  350. $to_array = array ( self::$to );
  351.  
  352. if ( count ( self::$bcc ) ) {
  353. foreach ( self::$bcc as $bcc ) {
  354. if ( preg_match ( "/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4})(\]?)$/" , str_replace ( " " , "" , $bcc ) ) ) {
  355. $to_array[ ] = "<" . $bcc . ">";
  356. }
  357. }
  358. }
  359.  
  360. foreach ( $to_array as $to_email ) {
  361. self::smtp_send_cmd ( "RCPT TO:" . $to_email );
  362.  
  363. if ( self::$smtp_code != 250 ) {
  364. self::smtp_error ( "Incorrect email address: $to_email" );
  365.  
  366. return;
  367. break;
  368. }
  369. }
  370.  
  371. self::smtp_send_cmd ( "DATA" );
  372.  
  373. if ( self::$smtp_code == 354 ) {
  374. fputs ( self::$smtp_fp , $data . "\r\n" );
  375. } else {
  376. self::smtp_error ( "Error on write to SMTP server" );
  377.  
  378. return;
  379. }
  380.  
  381. self::smtp_send_cmd ( "." );
  382.  
  383. if ( self::$smtp_code != 250 ) {
  384. self::smtp_error ( "Error on send mail" );
  385.  
  386. return;
  387. }
  388.  
  389. self::smtp_send_cmd ( "quit" );
  390.  
  391. if ( self::$smtp_code != 221 ) {
  392. self::smtp_error ( "Error on quit" );
  393.  
  394. return;
  395. }
  396.  
  397. @fclose ( self::$smtp_fp );
  398. } else {
  399. self::smtp_error ( "SMTP service unaviable" );
  400.  
  401. return;
  402. }
  403. }
  404.  
  405. public static function smtp_send_cmd ( $cmd )
  406. {
  407. self::$smtp_msg = "";
  408. self::$smtp_code = "";
  409.  
  410. fputs ( self::$smtp_fp , $cmd . "\r\n" );
  411.  
  412. self::smtp_get_line ();
  413.  
  414. self::$smtp_code = substr ( self::$smtp_msg , 0 , 3 );
  415.  
  416. return self::$smtp_code == "" ? false : true;
  417. }
  418.  
  419. public static function smtp_error ( $err = "" )
  420. {
  421. self::$smtp_msg = $err;
  422. self::$send_error = true;
  423.  
  424. return;
  425. }
  426.  
  427. public static function smtp_crlf_encode ( $data )
  428. {
  429. $data .= "\n";
  430. $data = str_replace ( "\n" , "\r\n" , str_replace ( "\r" , "" , $data ) );
  431. $data = str_replace ( "\n.\r\n" , "\n. \r\n" , $data );
  432.  
  433. return $data;
  434. }
  435. }
  436.  
  437. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement