Advertisement
Guest User

Untitled

a guest
Mar 10th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.38 KB | None | 0 0
  1. #!/usr/bin/php
  2. <?php
  3. $stream = '';
  4. $fp = fopen('php://stdin','r');
  5.  
  6. while($t=fread($fp,2048))
  7. {
  8. if( $t===chr(0) )
  9. break;
  10. $stream .= $t;
  11. }
  12. //$count_mails - количество писем с определенного домена.
  13. if($count_mails > 50){
  14. exit(0);
  15. }
  16. //вот здесь должно быть что-то что отправит письма дальше после всех изысканий.
  17.  
  18. // $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'имя отправителя');
  19. // $result = $mailSMTP->send('Кому письмо', 'Тема письма', 'Текст письма', 'Заголовки письма');
  20.  
  21. <?php
  22. /**
  23. * SendMailSmtpClass
  24. *
  25. * Класс для отправки писем через SMTP с авторизацией
  26. * Может работать через SSL протокол
  27. * Тестировалось на почтовых серверах yandex.ru, mail.ru и gmail.com
  28. *
  29. * @author Ipatov Evgeniy <admin@ipatov-soft.ru>
  30. * @version 1.0
  31. */
  32. class SendMailSmtpClass {
  33.  
  34. /**
  35. *
  36. * @var string $smtp_username - логин
  37. * @var string $smtp_password - пароль
  38. * @var string $smtp_host - хост
  39. * @var string $smtp_from - от кого
  40. * @var integer $smtp_port - порт
  41. * @var string $smtp_charset - кодировка
  42. *
  43. */
  44. public $smtp_username;
  45. public $smtp_password;
  46. public $smtp_host;
  47. public $smtp_from;
  48. public $smtp_port;
  49. public $smtp_charset;
  50.  
  51. public function __construct($smtp_username, $smtp_password, $smtp_host, $smtp_from, $smtp_port = 25, $smtp_charset = "utf-8") {
  52. $this->smtp_username = $smtp_username;
  53. $this->smtp_password = $smtp_password;
  54. $this->smtp_host = $smtp_host;
  55. $this->smtp_from = $smtp_from;
  56. $this->smtp_port = $smtp_port;
  57. $this->smtp_charset = $smtp_charset;
  58. }
  59.  
  60. /**
  61. * Отправка письма
  62. *
  63. * @param string $mailTo - получатель письма
  64. * @param string $subject - тема письма
  65. * @param string $message - тело письма
  66. * @param string $headers - заголовки письма
  67. *
  68. * @return bool|string В случаи отправки вернет true, иначе текст ошибки *
  69. */
  70. function send($mailTo, $subject, $message, $headers) {
  71. $contentMail = "Date: " . date("D, d M Y H:i:s") . " UTrn";
  72. $contentMail .= 'Subject: =?' . $this->smtp_charset . '?B?' . base64_encode($subject) . "=?=rn";
  73. $contentMail .= $headers . "rn";
  74. $contentMail .= $message . "rn";
  75.  
  76. try {
  77. if(!$socket = @fsockopen($this->smtp_host, $this->smtp_port, $errorNumber, $errorDescription, 30)){
  78. throw new Exception($errorNumber.".".$errorDescription);
  79. }
  80. if (!$this->_parseServer($socket, "220")){
  81. throw new Exception('Connection error');
  82. }
  83.  
  84. $server_name ='test' /*$_SERVER["SERVER_NAME"]*/;
  85. fputs($socket, "HELO $server_namern");
  86. if (!$this->_parseServer($socket, "250")) {
  87. fclose($socket);
  88. throw new Exception('Error of command sending: HELO');
  89. }
  90.  
  91. fputs($socket, "AUTH LOGINrn");
  92. if (!$this->_parseServer($socket, "334")) {
  93. fclose($socket);
  94. throw new Exception('Autorization error');
  95. }
  96.  
  97.  
  98.  
  99. fputs($socket, base64_encode($this->smtp_username) . "rn");
  100. if (!$this->_parseServer($socket, "334")) {
  101. fclose($socket);
  102. throw new Exception('Autorization error');
  103. }
  104.  
  105. fputs($socket, base64_encode($this->smtp_password) . "rn");
  106. if (!$this->_parseServer($socket, "235")) {
  107. fclose($socket);
  108. throw new Exception('Autorization error');
  109. }
  110.  
  111. fputs($socket, "MAIL FROM: <".$this->smtp_username.">rn");
  112. if (!$this->_parseServer($socket, "250")) {
  113. fclose($socket);
  114. throw new Exception('Error of command sending: MAIL FROM');
  115. }
  116.  
  117. $mailTo = ltrim($mailTo, '<');
  118. $mailTo = rtrim($mailTo, '>');
  119. fputs($socket, "RCPT TO: <" . $mailTo . ">rn");
  120. if (!$this->_parseServer($socket, "250")) {
  121. fclose($socket);
  122. throw new Exception('Error of command sending: RCPT TO');
  123. }
  124.  
  125. fputs($socket, "DATArn");
  126. if (!$this->_parseServer($socket, "354")) {
  127. fclose($socket);
  128. throw new Exception('Error of command sending: DATA');
  129. }
  130.  
  131. fputs($socket, $contentMail."rn.rn");
  132. if (!$this->_parseServer($socket, "250")) {
  133. fclose($socket);
  134. throw new Exception("E-mail didn't sent");
  135. }
  136.  
  137. fputs($socket, "QUITrn");
  138. fclose($socket);
  139. } catch (Exception $e) {
  140. return $e->getMessage();
  141. }
  142. return true;
  143. }
  144.  
  145. private function _parseServer($socket, $response) {
  146. while (@substr($responseServer, 3, 1) != ' ') {
  147. if (!($responseServer = fgets($socket, 256))) {
  148. return false;
  149. }
  150. }
  151. if (!(substr($responseServer, 0, 3) == $response)) {
  152. return false;
  153. }
  154. return true;
  155.  
  156. }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement