Web icon indicating copy to clipboard operation
Web copied to clipboard

Отправка почты

Open romkazor opened this issue 8 years ago • 20 comments

Проверял как на стейбл так и на анстейбл версии. Почта работает только на восстановление пароля. Протест и подача бана не работает ни через системный почтовик ни через smtp скрипт.

При подаче или апелляции бана в логах почтовика пусто (при использовании системного) при сбросе пароля все ок.

romkazor avatar Nov 14 '16 08:11 romkazor

Через час-два поправлю и залью фикс.

CrazyHackGUT avatar Nov 14 '16 08:11 CrazyHackGUT

Просмотрел весь код сейчас. Всё в порядке. Логи у самой системы пустые?

CrazyHackGUT avatar Nov 14 '16 12:11 CrazyHackGUT

Да, но только при протесте или подаче бана. При сбросе пароля есть и логи и соответственно письмо.

romkazor avatar Nov 14 '16 13:11 romkazor

при сбросе паролья и При подаче апелляции бана письма не приходят 2016-11-16_224333 2016-11-16_224649 2016-11-16_224849 2016-11-16_224927

miki1966 avatar Nov 16 '16 19:11 miki1966

Возможно, почтовый сервер отклоняет запрос из-за заголовков. В процессе разбирательства.

CrazyHackGUT avatar Nov 17 '16 14:11 CrazyHackGUT

@CrazyHackGut, там запрос кривой на получение эмейла того админа кто бан выдал когда аппеляцию на бан подают. Там покопай...

redbol avatar Nov 20 '16 00:11 redbol

Он просто старается сразу всем отослать оповещение, что была создана "Апелляция на бан", и главным админам и тому админу кто выдал бан. Короче, продебажь там список который выходит при отправке. Возможно smtp не может из за ограничений отсылается почты в секунду сразу обработать все запросы, вот и блокирует.

redbol avatar Nov 20 '16 00:11 redbol

Так там не обрабатывается даже первое письмо, насколько я понял.

CrazyHackGUT avatar Nov 20 '16 07:11 CrazyHackGUT

Почта так и не отправляется в версия 1.1.5.1 (515) в release_114 почта работала без проблем хоть и надо было вносить в конфиг все. Как на время сделать обратно почту?

IIIef avatar Jan 26 '17 20:01 IIIef

@IIIef качаем релиз 1.1.4, достаём оттуда smtp-func.php и перемещаем, куда надо, после чего в /includes/sb-callback.php после комментария о лицензии СБ дописываем: require_once(INCLUDES_PATH . '/smtp-func.php');

И заменяем во всех файлах: EMail(

на: smtpmail(

CrazyHackGUT avatar Jan 26 '17 21:01 CrazyHackGUT

Спасибо.

IIIef avatar Jan 26 '17 21:01 IIIef

Сделал как вы написали и шибка на smtp-func.php on line 98

IIIef avatar Jan 29 '17 01:01 IIIef

Что на строке 98 в smtp-func.php? Я пока что в экстрасенсы не нанимался, а копать старые релизы (качать) у меня нет желания: USB-модем и трафик.

CrazyHackGUT avatar Jan 29 '17 05:01 CrazyHackGUT

  1. `<?php

  2. //Сколько писем можно отправлять с бесплатных (SMTP) почтовых ящиков?

  3. //Цифры такие:

  4. //mail.ru — не более 1 письма в минуту

  5. //yandex.ru — не более 150 писем в сутки, не более 25 адресатов в одном письме

  6. //gmail.com, tut.by — не более 500 писем в сутки (хотя в справке гугла фигурирует 2000), не более 500 получателей в одном письме за раз при отправке через интерфейс gmail.com (через web-интерфейс, т.е. при входе через браузер), не более 100 получателей в одном письме за раз при отправке через ваш почтовый клиент

  7. //rambler.ru — не более 200 писем в час

  8. //ukr.net — не более 250 писем в сутки

  9. //meta.ua — не более 200 писем в сутки

  10. //aol.com — не более 500 писем в сутки

  11. //lycos.com — не более 250 писем в сутки

  12. $config['smtp_username'] = '[email protected]'; //Смените на имя своего почтового ящика.

  13. $config['smtp_port'] = '465'; // Порт работы. Не меняйте, если не уверены.

  14. $config['smtp_host'] = 'ssl://smtp.yandex.ru'; //сервер для отправки почты

  15. $config['smtp_password'] = 'primer_'; //Измените пароль

  16. $config['smtp_debug'] = true; //Если Вы хотите видеть сообщения ошибок, укажите true вместо false

  17. $config['smtp_charset'] = 'UTF-8'; //кодировка сообщений. (или UTF-8, итд) Windows-1251

  18. $config['smtp_from'] = 'Your Name'; //Ваше имя - или имя Вашего сайта. Будет показывать при прочтении в поле "От кого"

  19. function smtpmail($mail_to, $subject, $message, $headers='') {

  20.      global $config;
    
  21.     $SEND =   "Date: ".date("D, d M Y H:i:s") . " UT\r\n";
    
  22.     $SEND .=   'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
    
  23.     if ($headers) $SEND .= $headers."\r\n\r\n";
    
  24.     else
    
  25.     {
    
  26.             $SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
    
  27.             $SEND .= "MIME-Version: 1.0\r\n";
    
  28.             $SEND .= "Content-Type: text/plain; charset=\"".$config['smtp_charset']."\"\r\n";
    
  29.             $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
    
  30.             $SEND .= "From: \"".$config['smtp_from']."\" <".$config['smtp_username'].">\r\n";
    
  31.             $SEND .= "To: $mail_to <$mail_to>\r\n";
    
  32.             $SEND .= "X-Priority: 3\r\n\r\n";
    
  33.     }
    
  34.     $SEND .=  $message."\r\n";
    
  35.      if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) {
    
  36.         if ($config['smtp_debug']) echo $errno."&lt;br&gt;".$errstr;
    
  37.         return false;
    
  38.      }
    
  39.         if (!server_parse($socket, "220", __LINE__)) return false;
    
  40.         fputs($socket, "HELO " . $config['smtp_host'] . "\r\n");
    
  41.         if (!server_parse($socket, "250", __LINE__)) {
    
  42.            if ($config['smtp_debug']) echo '<p>Не могу отправить HELO!</p>';
    
  43.            fclose($socket);
    
  44.            return false;
    
  45.         }
    
  46.         fputs($socket, "AUTH LOGIN\r\n");
    
  47.         if (!server_parse($socket, "334", __LINE__)) {
    
  48.            if ($config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизаци.</p>';
    
  49.            fclose($socket);
    
  50.            return false;
    
  51.         }
    
  52.         fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
    
  53.         if (!server_parse($socket, "334", __LINE__)) {
    
  54.            if ($config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>';
    
  55.            fclose($socket);
    
  56.            return false;
    
  57.         }
    
  58.         fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
    
  59.         if (!server_parse($socket, "235", __LINE__)) {
    
  60.            if ($config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
    
  61.            fclose($socket);
    
  62.            return false;
    
  63.         }
    
  64.         fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n");
    
  65.         if (!server_parse($socket, "250", __LINE__)) {
    
  66.            if ($config['smtp_debug']) echo '<p>Не могу отправить комманду MAIL FROM: </p>';
    
  67.            fclose($socket);
    
  68.            return false;
    
  69.         }
    
  70.         fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");
    
  71.         if (!server_parse($socket, "250", __LINE__)) {
    
  72.            if ($config['smtp_debug']) echo '<p>Не могу отправить комманду RCPT TO: </p>';
    
  73.            fclose($socket);
    
  74.            return false;
    
  75.         }
    
  76.         fputs($socket, "DATA\r\n");
    
  77.         if (!server_parse($socket, "354", __LINE__)) {
    
  78.            if ($config['smtp_debug']) echo '<p>Не могу отправить комманду DATA</p>';
    
  79.            fclose($socket);
    
  80.            return false;
    
  81.         }
    
  82.         fputs($socket, $SEND."\r\n.\r\n");
    
  83.         if (!server_parse($socket, "250", __LINE__)) {
    
  84.            if ($config['smtp_debug']) echo '<p>Не смог отправить тело письма. Письмо не было отправленно!</p>';
    
  85.            fclose($socket);
    
  86.            return false;
    
  87.         }
    
  88.         fputs($socket, "QUIT\r\n");
    
  89.         fclose($socket);
    
  90.         return TRUE;
    
  91. }

  92. function server_parse($socket, $response, $line = LINE) {

  93.     global $config;
    
  94. while (substr($server_response, 3, 1) != ' ') {
    
  95.     if (!($server_response = fgets($socket, 256))) {
    
  96.                if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
    
  97.                return false;
    
  98.             }
    
  99. }
    
  100. if (!(substr($server_response, 0, 3) == $response)) {
    
  101.        if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
    
  102.        return false;
    
  103.     }
    
  104. return true;
    
  105. }

  106. ?>

`

IIIef avatar Jan 29 '17 05:01 IIIef

Полную ошибку увидеть можно?

CrazyHackGUT avatar Jan 29 '17 06:01 CrazyHackGUT

img-2017-01-29-09-45-45

IIIef avatar Jan 29 '17 06:01 IIIef

Удалите функцию smtpmail() из system-functions.php

CrazyHackGUT avatar Jan 29 '17 06:01 CrazyHackGUT

УРААААА, работает!!! Спасибо))))

IIIef avatar Jan 29 '17 07:01 IIIef

Парни, в итоге есть версия в которой все работает без плясок с бубнами? Т.е. скачал, установил, прописал данные от почтовика и все. Спасибо.

romkazor avatar Feb 01 '17 14:02 romkazor

Нужна помощь по этому Issue. А конкретно интересует кто нибудь, кто может "взять в аренду" бесплатный веб хостинг на МайАрене под тестирования.

CrazyHackGUT avatar Nov 05 '17 10:11 CrazyHackGUT