Guest User

Untitled

a guest
Nov 9th, 2012
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.95 KB | None | 0 0
  1. <?php
  2.  
  3. $server_response = '';
  4. global $server_response;
  5.  
  6. $config['smtp_username'] = '[email protected]';
  7.  
  8. $config['smtp_port'] = '465';
  9.  
  10. $config['smtp_host'] = 'ssl://smtp.gmail.com';
  11.  
  12. $config['smtp_password'] = 'tester';
  13.  
  14. $config['smtp_charset'] = 'utf-8';
  15.  
  16. //поле "От кого"
  17. $config['smtp_from'] = 'otTester';
  18.  
  19. function smtpmail($mail_to, $subject, $message, $headers = '') {
  20.  
  21.     global $config;
  22.     $SEND = "Date: " . date("D, d M Y H:i:s") . " UT\r\n";
  23.     $SEND .= 'Subject: =?' . $config['smtp_charset'] . '?B?' . base64_encode($subject) . "=?=\r\n";
  24.  
  25.     if ($headers) {
  26.         $SEND .= $headers . "\r\n\r\n";
  27.     } else {
  28.         $SEND .= "Reply-To: " . $config['smtp_username'] . "\r\n";
  29.         $SEND .= "MIME-Version: 1.0\r\n";
  30.         $SEND .= "Content-Type: text/plain; charset=\"" . $config['smtp_charset'] . "\"\r\n";
  31.         $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
  32.         $SEND .= "From: \"" . $config['smtp_from'] . "\" <" . $config['smtp_username'] . ">\r\n";
  33.         $SEND .= "To: $mail_to <$mail_to>\r\n";
  34.         $SEND .= "X-Priority: 3\r\n\r\n";
  35.     }
  36.  
  37.     $SEND .= $message . "\r\n";
  38.  
  39.     if (!$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30)) {
  40.         if ($config['smtp_debug']) {
  41.             echo $errno . "&lt;br&gt;" . $errstr;
  42.         }
  43.         return false;
  44.     }
  45.  
  46.     if (!server_parse($socket, "220", __LINE__)) {
  47.         return false;
  48.     }
  49.  
  50.     fputs($socket, "HELO " . $config['smtp_host'] . "\r\n");
  51.  
  52.     if (!server_parse($socket, "250", __LINE__)) {
  53.         if ($config['smtp_debug']) {
  54.             echo '<p>Не могу отправить HELO!</p>';
  55.         }
  56.         fclose($socket);
  57.         return false;
  58.     }
  59.  
  60.     fputs($socket, "AUTH LOGIN\r\n");
  61.  
  62.     if (!server_parse($socket, "334", __LINE__)) {
  63.         if ($config['smtp_debug']) {
  64.             echo '<p>Не могу найти ответ на запрос авторизаци.</p>';
  65.         }
  66.         fclose($socket);
  67.         return false;
  68.     }
  69.  
  70.     fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
  71.  
  72.     if (!server_parse($socket, "334", __LINE__)) {
  73.         if ($config['smtp_debug']) {
  74.             echo '<p>Логин авторизации не был принят сервером!</p>';
  75.         }
  76.         fclose($socket);
  77.         return false;
  78.     }
  79.  
  80.     fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
  81.  
  82.     if (!server_parse($socket, "235", __LINE__)) {
  83.         if ($config['smtp_debug']) {
  84.             echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
  85.         }
  86.         fclose($socket);
  87.         return false;
  88.     }
  89.  
  90.     fputs($socket, "MAIL FROM: <" . $config['smtp_username'] . ">\r\n");
  91.  
  92.     if (!server_parse($socket, "250", __LINE__)) {
  93.         if ($config['smtp_debug']) {
  94.             echo '<p>Не могу отправить комманду MAIL FROM: </p>';
  95.         }
  96.         fclose($socket);
  97.         return false;
  98.     }
  99.  
  100.     fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");
  101.  
  102.     if (!server_parse($socket, "250", __LINE__)) {
  103.         if ($config['smtp_debug']) {
  104.             echo '<p>Не могу отправить комманду RCPT TO: </p>';
  105.         }
  106.         fclose($socket);
  107.         return false;
  108.     }
  109.  
  110.     fputs($socket, "DATA\r\n");
  111.  
  112.     if (!server_parse($socket, "354", __LINE__)) {
  113.         if ($config['smtp_debug']) {
  114.             echo '<p>Не могу отправить комманду DATA</p>';
  115.         }
  116.         fclose($socket);
  117.         return false;
  118.     }
  119.  
  120.     fputs($socket, $SEND . "\r\n.\r\n");
  121.  
  122.     if (!server_parse($socket, "250", __LINE__)) {
  123.         if ($config['smtp_debug']) {
  124.             echo '<p>Не смог отправить тело письма. Письмо не было отправленно!</p>';
  125.         }
  126.         fclose($socket);
  127.         return false;
  128.     }
  129.     fputs($socket, "QUIT\r\n");
  130.     fclose($socket);
  131.     return TRUE;
  132. }
  133.  
  134. function server_parse($socket, $response, $line = __LINE__) {
  135.     global $config;
  136.     while (@substr($server_response, 3, 1) != ' ') {
  137.  
  138.         if (!($server_response = fgets($socket, 256))) {
  139.             if ($config['smtp_debug']) {
  140.                 echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
  141.             }
  142.             return false;
  143.         }
  144.     }
  145.  
  146.     if (!(substr($server_response, 0, 3) == $response)) {
  147.         if ($config['smtp_debug']) {
  148.             echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
  149.         }
  150.         return false;
  151.     }
  152.     return true;
  153. }
  154.  
  155. //юзать так:
  156. if (smtpmail("[email protected]", "тема сообщения", "сообщение\nвторая строка, можно прикрутить html, тока в хидерах заменить Content-Type: text/plain; на html")) {
  157.     echo 'отправлено';
  158. }
Advertisement
Add Comment
Please, Sign In to add comment