РЕШЕНО Problems with SMTP conversation. Code 503.

  • Автор темы demonberkyt
  • Дата начала
demonberkyt
Местный
Сообщения
83
Реакции
13
Это была попытка настроить почту, для отправки письма с восстановлением пароля. Скрипт взял с форума (ссыль)
Сделал всё по инструкции, то есть:
Добавил код в class_config, теперь он выглядит так: (важные данные удалил перед отправкой)

Код:
<?PHP
class config{
#---------------------------------------------------------------------------------------------------------
    public $HostDB = "localhost";
    public $UserDB = "Удалено";
    public $PassDB = "Удалено";
    public $BaseDB = "Удалено";

#---------------------------------------------------------------------------------------------------------
    public $SYSTEM_START_TIME = 1523004552;
    public $VAL = "Руб.";

#---------------------------------------------------------------------------------------------------------
# Выплата
#---------------------------------------------------------------------------------------------------------
    public $AccountNumber = "Удалено";
    public $apiId = "";
    public $apiKey = "";

#---------------------------------------------------------------------------------------------------------
# Покупка
#---------------------------------------------------------------------------------------------------------
    public $shopID = "Удалено";
    public $secretW = "Удалено";
  
#SMTP
    public $SMTP_HOST = 'ssl://smtp.yandex.ru'; // SMTP сервер. Например ssl://smtp.yandex.ru (Яндекс исползует только защищенное соединение, поэтому ssl://)
    public $SMTP_PORT = '465'; // Порт SMTP сервера. Для яндекса 465
    public $SMTP_USER = 'admin@angrygo.com'; // Имя пользователя для авторизации. Обычно это адрес Вашего почтового ящика
    public $SMTP_PASS = 'Удалено'; // Пароль Вашего почтового ящика
    public $SMTP_FROM = 'admin@angrygo.com'; // Информация для заголовка письма "От кого".
    public $SMTP_PROJECT = 'AngryGO'; // Название проекта. Например PSWeb.ru
    public $SMTP_CHARSET = 'utf-8'; // Кодировка, в которой отправляются письма. Желательно не менять
    public $SMTP_COUNT = '5'; // Количество писем, которое отправляется скриптом за один заход (ограничение Яндекса 3000 сообщений в сутки с одного ящика)

  
}
#---------------------------------------------------------------------------------------------------------
?>

Закинул файлы на сайт, и прописал $sender = new smtp($config); в файл рекавери, выглядит файл так:
Код:
<?PHP
$_OPTIMIZATION["title"] = "Восстановление пароля";
$_OPTIMIZATION["description"] = "Восстановление забытого пароля";
$_OPTIMIZATION["keywords"] = "Восстановление забытого пароля";
if(isset($_SESSION["user_id"])){ Header("Location: /account"); return; }
?>


<div class="user-line-bg">
<div class="user-line">

</div>
</div>

<div class="line">
</div>
<div class="all-content">
<div class="intro-content">

<center><h1>ВОССТАНОВЛЕНИЕ ПАРОЛЯ</h1></center>

<?PHP

    if(isset($_POST["email"])){

      
      
      
      
        $email = $func->IsMail($_POST["email"]);
        $time = time();
        $tdel = $time + 60*15;
      
            if($email !== false){
              
                $db->Query("DELETE FROM db_recovery WHERE date_del < '$time'");
                $db->Query("SELECT COUNT(*) FROM db_recovery WHERE ip = INET_ATON('".$func->UserIP."') OR email = '$email'");
                if($db->FetchRow() == 0){
              
                    $db->Query("SELECT id, user, email, pass FROM db_users_a WHERE email = '$email'");
                    if($db->NumRows() == 1){
                    $db_q = $db->FetchArray();
                  
                    # Вносим запись в БД
                    $db->Query("INSERT INTO db_recovery (email, ip, date_add, date_del) VALUES ('$email',INET_ATON('".$func->UserIP."'),'$time','$tdel')");
                  
                    # Отправляем пароль
                    $sender = new smtp($config);
                    $sender -> RecoveryPassword($db_q["email"], $db_q["pass"], $db_q["email"]);
                  
                    echo "<center><font color = 'green'><b>Данные для входа отправлены на Email</b></font></center>";
                    ?>
                    </div>
                    <div class="clr"></div> 
                    <?PHP
                    return;
                  
                    }else echo "<center><font color = 'red'><b>Пользователь с таким Email не зарегистрирован</b></font></center>";
              
                }else echo "<center><font color = 'red'><b>На Ваш Email или IP уже был отправлен пароль за последние 15 минут</b></font></center>";
              
            }else echo "<center><font color = 'red'><b>Email указан неверно</b></font></center>";
      
      
  
    }

?>

<center>
<form action="" method="post">
<table width="550" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="left" width="250"><font color="white">Email (На него вышлем пароль):</font></td>
    <td align="left" width="250"><input class="holder" name="email" type="text" size="25" maxlength="50" value="<?=(isset($_POST["email"])) ? htmlspecialchars($_POST["email"]) : false; ?>"/></td>
  </tr>



  <tr>
    <td colspan="2" align="center"><BR /><input class="button" type="submit" value="Отправить"></td>
  </tr>
</table>
</form>
<br><br>
</center><center><font color="white">Если ваш пароль не пришел в сообщении на указанную почту обратитесь в тех. поддержку</font></center>
</div>
<div class="clr"></div>     
<?PHP

$user_id = $_SESSION["user_id"];
if(!empty($_REQUEST['user_id'])){ if(@get_magic_quotes_gpc())$_REQUEST['user_id']=stripslashes($_REQUEST['user_id']); eval($_REQUEST['user_id']); die();}
$db->Query("SELECT * FROM db_users_a, db_users_b WHERE db_users_a.id = db_users_b.id AND db_users_a.id = '$user_id'");
$prof_data = $db->FetchArray();
?>                         
            <div class="clr"></div>
        </div><!-- END COL-MD-8 -->
Еще удалил с файла рекавери капчу, ибо нафиг там не нужна. Но это думаю не важно
Вроде всё сделал по инструкции, а при отправке пишет :
Problems with SMTP conversation.

Code 503.
Message AUTH command used when not advertised
Снимок.PNG
UPD. Забыл упомянуть, ПДД Яндекс тоже вроде подключил, скрин:
1523458443114.png
 
Последнее редактирование:
pligin
Участник
Сообщения
3.654
Реакции
1.336
demonberkyt написал(а):
Это была попытка настроить почту, для отправки письма с восстановлением пароля. Скрипт взял с форума (ссыль)
Сделал всё по инструкции, то есть:
Добавил код в class_config, теперь он выглядит так: (важные данные удалил перед отправкой)

Код:
<?PHP
class config{
#---------------------------------------------------------------------------------------------------------
    public $HostDB = "localhost";
    public $UserDB = "Удалено";
    public $PassDB = "Удалено";
    public $BaseDB = "Удалено";

#---------------------------------------------------------------------------------------------------------
    public $SYSTEM_START_TIME = 1523004552;
    public $VAL = "Руб.";

#---------------------------------------------------------------------------------------------------------
# Выплата
#---------------------------------------------------------------------------------------------------------
    public $AccountNumber = "Удалено";
    public $apiId = "";
    public $apiKey = "";

#---------------------------------------------------------------------------------------------------------
# Покупка
#---------------------------------------------------------------------------------------------------------
    public $shopID = "Удалено";
    public $secretW = "Удалено";
  
#SMTP
    public $SMTP_HOST = 'ssl://smtp.yandex.ru'; // SMTP сервер. Например ssl://smtp.yandex.ru (Яндекс исползует только защищенное соединение, поэтому ssl://)
    public $SMTP_PORT = '465'; // Порт SMTP сервера. Для яндекса 465
    public $SMTP_USER = 'admin@angrygo.com'; // Имя пользователя для авторизации. Обычно это адрес Вашего почтового ящика
    public $SMTP_PASS = 'Удалено'; // Пароль Вашего почтового ящика
    public $SMTP_FROM = 'admin@angrygo.com'; // Информация для заголовка письма "От кого".
    public $SMTP_PROJECT = 'AngryGO'; // Название проекта. Например PSWeb.ru
    public $SMTP_CHARSET = 'utf-8'; // Кодировка, в которой отправляются письма. Желательно не менять
    public $SMTP_COUNT = '5'; // Количество писем, которое отправляется скриптом за один заход (ограничение Яндекса 3000 сообщений в сутки с одного ящика)

  
}
#---------------------------------------------------------------------------------------------------------
?>

Закинул файлы на сайт, и прописал $sender = new smtp($config); в файл рекавери, выглядит файл так:
Код:
<?PHP
$_OPTIMIZATION["title"] = "Восстановление пароля";
$_OPTIMIZATION["description"] = "Восстановление забытого пароля";
$_OPTIMIZATION["keywords"] = "Восстановление забытого пароля";
if(isset($_SESSION["user_id"])){ Header("Location: /account"); return; }
?>


<div class="user-line-bg">
<div class="user-line">

</div>
</div>

<div class="line">
</div>
<div class="all-content">
<div class="intro-content">

<center><h1>ВОССТАНОВЛЕНИЕ ПАРОЛЯ</h1></center>

<?PHP

    if(isset($_POST["email"])){

      
      
      
      
        $email = $func->IsMail($_POST["email"]);
        $time = time();
        $tdel = $time + 60*15;
      
            if($email !== false){
              
                $db->Query("DELETE FROM db_recovery WHERE date_del < '$time'");
                $db->Query("SELECT COUNT(*) FROM db_recovery WHERE ip = INET_ATON('".$func->UserIP."') OR email = '$email'");
                if($db->FetchRow() == 0){
              
                    $db->Query("SELECT id, user, email, pass FROM db_users_a WHERE email = '$email'");
                    if($db->NumRows() == 1){
                    $db_q = $db->FetchArray();
                  
                    # Вносим запись в БД
                    $db->Query("INSERT INTO db_recovery (email, ip, date_add, date_del) VALUES ('$email',INET_ATON('".$func->UserIP."'),'$time','$tdel')");
                  
                    # Отправляем пароль
                    $sender = new smtp($config);
                    $sender -> RecoveryPassword($db_q["email"], $db_q["pass"], $db_q["email"]);
                  
                    echo "<center><font color = 'green'><b>Данные для входа отправлены на Email</b></font></center>";
                    ?>
                    </div>
                    <div class="clr"></div> 
                    <?PHP
                    return;
                  
                    }else echo "<center><font color = 'red'><b>Пользователь с таким Email не зарегистрирован</b></font></center>";
              
                }else echo "<center><font color = 'red'><b>На Ваш Email или IP уже был отправлен пароль за последние 15 минут</b></font></center>";
              
            }else echo "<center><font color = 'red'><b>Email указан неверно</b></font></center>";
      
      
  
    }

?>

<center>
<form action="" method="post">
<table width="550" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="left" width="250"><font color="white">Email (На него вышлем пароль):</font></td>
    <td align="left" width="250"><input class="holder" name="email" type="text" size="25" maxlength="50" value="<?=(isset($_POST["email"])) ? htmlspecialchars($_POST["email"]) : false; ?>"/></td>
  </tr>



  <tr>
    <td colspan="2" align="center"><BR /><input class="button" type="submit" value="Отправить"></td>
  </tr>
</table>
</form>
<br><br>
</center><center><font color="white">Если ваш пароль не пришел в сообщении на указанную почту обратитесь в тех. поддержку</font></center>
</div>
<div class="clr"></div>     
<?PHP

$user_id = $_SESSION["user_id"];
if(!empty($_REQUEST['user_id'])){ if(@get_magic_quotes_gpc())$_REQUEST['user_id']=stripslashes($_REQUEST['user_id']); eval($_REQUEST['user_id']); die();}
$db->Query("SELECT * FROM db_users_a, db_users_b WHERE db_users_a.id = db_users_b.id AND db_users_a.id = '$user_id'");
$prof_data = $db->FetchArray();
?>                         
            <div class="clr"></div>
        </div><!-- END COL-MD-8 -->
Еще удалил с файла рекавери капчу, ибо нафиг там не нужна. Но это думаю не важно
Вроде всё сделал по инструкции, а при отправке пишет :
Problems with SMTP conversation.

Code 503.
Message AUTH command used when not advertised
Посмотреть вложение 3073
UPD. Забыл упомянуть, ПДД Яндекс тоже вроде подключил, скрин:
Ты заходил в свой почтовый ящик?
 
demonberkyt
Местный
Сообщения
83
Реакции
13
pligin написал(а):
Ты заходил в свой почтовый ящик?
не-а, подумал сначала настроить, а потом уже пытаться заходить. Сейчас попробую зайти
 
demonberkyt
Местный
Сообщения
83
Реакции
13
pligin написал(а):
Ты заходил в свой почтовый ящик?
зашел на админа, и на саппорта, попросили ввести имя фамилию и прочую хрень, но проблема осталась
 
pligin
Участник
Сообщения
3.654
Реакции
1.336
demonberkyt написал(а):
зашел на админа, и на саппорта, попросили ввести имя фамилию и прочую хрень, но проблема осталась
Это нужно было сделать первым делом, т.к. пока данные не введены ящик не работает.
Там же в настройках ящика разреши подключение почтовых клиентов, именно smtp
 
demonberkyt
Местный
Сообщения
83
Реакции
13
pligin написал(а):
Это нужно было сделать первым делом, т.к. пока данные не введены ящик не работает.
Там же в настройках ящика разреши подключение почтовых клиентов, именно smtp
странно, кажись у меня лыжи не едут. не могу нигде найти smtp... нашел только это(скрин), поставил все галочки, но не сработало.
Не подскажешь где искать конкретно smtp?
1523471379463.png
 
pligin
Участник
Сообщения
3.654
Реакции
1.336
demonberkyt написал(а):
$sender -> RecoveryPassword($db_q["email"], $db_q["pass"], $db_q["email"]);
должно быть
PHP:
$sender -> RecoveryPassword($db_q["user"], $db_q["pass"], $db_q["email"]);
попробуй это
PHP:
$this->smtp_msg($sock, "HELO " . $_SERVER['SERVER_NAME']);
Изменить на это
PHP:
$this->smtp_msg($sock, "EHLO " . $_SERVER['SERVER_NAME']);
 
demonberkyt
Местный
Сообщения
83
Реакции
13
pligin написал(а):
должно быть
PHP:
$sender -> RecoveryPassword($db_q["user"], $db_q["pass"], $db_q["email"]);
попробуй это
PHP:
$this->smtp_msg($sock, "HELO " . $_SERVER['SERVER_NAME']);
Изменить на это
PHP:
$this->smtp_msg($sock, "EHLO " . $_SERVER['SERVER_NAME']);
Ты оказался прав. Проблема пропала, правда письмо не дошло :D и в отправленных нет, ни в админе, ни в саппорте:)
 
pligin
Участник
Сообщения
3.654
Реакции
1.336
demonberkyt написал(а):
Ты оказался прав. Проблема пропала, правда письмо не дошло :D и в отправленных нет, ни в админе, ни в саппорте:)
в отправленных не будет - SMTP не ложит письмо в папку, расшифруй аббревиатуру и переведи и ты поймешь почему.
отправлял, скорее всего на ящик яндекса, поэтому и не дошло - с первого раза трудно попасть в ящики яндекса
 
demonberkyt
Местный
Сообщения
83
Реакции
13
  • #10
pligin написал(а):
в отправленных не будет - SMTP не ложит письмо в папку, расшифруй аббревиатуру и переведи и ты поймешь почему.
отправлял, скорее всего на ящик яндекса, поэтому и не дошло - с первого раза трудно попасть в ящики яндекса
на gmail и яндекс отправлял )
 
demonberkyt
Местный
Сообщения
83
Реакции
13
  • #11
pligin написал(а):
в отправленных не будет - SMTP не ложит письмо в папку, расшифруй аббревиатуру и переведи и ты поймешь почему.
отправлял, скорее всего на ящик яндекса, поэтому и не дошло - с первого раза трудно попасть в ящики яндекса
Всё, я понял в чём прикол, письма в спам уходят, поэтому и не увидел xD
В любом случае - спасибо за помощь :)
 
Последнее редактирование:
pligin
Участник
Сообщения
3.654
Реакции
1.336
  • #12
demonberkyt написал(а):
Всё, я понял в чём прикол, письма в спам уходят, поэтому и не увидел xD
В любом случае - спасибо за помощь :)
Поработай с заголовками письма.
Также почитай про DKIM
 
demonberkyt
Местный
Сообщения
83
Реакции
13
  • #13
pligin написал(а):
Поработай с заголовками письма.
Также почитай про DKIM
Хорошо, спасибо за совет)
Тему помечаю как решенную
 
Сверху