ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


 Страниц (1): [1]   

> Без описания
Gori
Отправлено: 2 сентября 2014 — 06:39
Post Id


Пользователь
Full Member


Покинул форум
Сообщений всего: 165
Дата рег-ции: Сент. 2013  
Репутация: 2




Нашёл в сети скрипт SMTP авторизации для формы отправки с сайта. Но он что-то не работает. Кто-нибудь может исправить ошибку?
CODE:
<?php
#Адрес сервера
$SmtpServer="mail.***.ru";
#Адрес порта
$SmtpPort="25";
#Логин авторизации на сервера SMTP
$SmtpUser="username";
#Пароль авторизации на сервера SMTP
$SmtpPass="password";

#Класс работы с почтой
class SMTPClient
{
function SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body)
{
$this->SmtpServer = $SmtpServer;
$this->SmtpUser = base64_encode ($SmtpUser);
$this->SmtpPass = base64_encode ($SmtpPass);
$this->from = $from;
$this->to = $to;
$this->subject = $subject;
$this->body = $body;
if ($SmtpPort == "")
{
$this->PortSMTP = 25;
}
else
{
$this->PortSMTP = $SmtpPort;
}
}
function SendMail ()
{
if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP))
{
fputs ($SMTPIN, "EHLO ".$HTTP_HOST."\r\n");
$talk["hello"] = fgets ( $SMTPIN, 1024 );
fputs($SMTPIN, "auth login\r\n");
$talk["res"]=fgets($SMTPIN,1024);
fputs($SMTPIN, $this->SmtpUser."\r\n");
$talk["user"]=fgets($SMTPIN,1024);
fputs($SMTPIN, $this->SmtpPass."\r\n");
$talk["pass"]=fgets($SMTPIN,256);
fputs ($SMTPIN, "MAIL FROM: <".$this->from.">\r\n");
$talk["From"] = fgets ( $SMTPIN, 1024 );
fputs ($SMTPIN, "RCPT TO: <".$this->to.">\r\n");
$talk["To"] = fgets ($SMTPIN, 1024);
fputs($SMTPIN, "DATA\r\n");
$talk["data"]=fgets( $SMTPIN,1024 );
fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\r\n\r\n".$this->body."\r\n.\r\n");
$talk["send"]=fgets($SMTPIN,256);
fputs ($SMTPIN, "QUIT\r\n");
fclose($SMTPIN);
}
return $talk;
}
}

if($_SERVER["REQUEST_METHOD"] == "POST")
{
$to = $_POST['to'];
$from = $_POST['from'];
$subject = $_POST['sub'];
$body = $_POST['message'];
$SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body);
$SMTPChat = $SMTPMail->SendMail();
}
?>

<form method="post" action="">
Куда:<input type="text" name="to" />
Откуда:<input type='text' name="from" />
Тема:<input type='text' name="sub" />
Сообщение :<textarea name="message"></textarea>
<input type="submit" value="Отправить " />
</form>

Или может быть где-то есть другой вариант? Жедательно уже готовый вид.
 
 
1Bot
Отправлено: 2 сентября 2014 — 07:14
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 773
Дата рег-ции: Апр. 2009  
Откуда: Днепропетровск
Репутация: 69




Gori
Возможно на сервере задан другой метод аутентификации, например "Пароль без защиты передачи" или "Зашифрованный пароль", , возможно другой - нужно смотреть настройки почтового клиента, с которым нормально работает отправка писем на сервер.

(Отредактировано автором: 2 сентября 2014 — 07:15)

 
 
Gori
Отправлено: 2 сентября 2014 — 08:23
Post Id


Пользователь
Full Member


Покинул форум
Сообщений всего: 165
Дата рег-ции: Сент. 2013  
Репутация: 2




Да говорят вроде скрипт где-то с ошибкой.

Жаль от него отказываться, он приятно прост. Другие которые нашёл по этой теме, сложноваты.
 
 
Gori
Отправлено: 3 сентября 2014 — 07:20
Post Id


Пользователь
Full Member


Покинул форум
Сообщений всего: 165
Дата рег-ции: Сент. 2013  
Репутация: 2




Вот что мне ответил саппорт:
Цитата:
Здравствуйте!

В лог-файлах почтового сервера обнаружены следующие записи:
Sep 2 12:14:43 fcgp01.mail.nic.ru Sep 02 12:14 fcgp01.nicmail.ru 12:14:43.123 1 SMTPI-894880([212.193.234.131]) dropping: got pre-prompt data:
Sep 2 10:53:49 fcgp02.mail.nic.ru Sep 02 10:53 fcgp02.nicmail.ru 10:53:49.168 1 SMTPI-829316([212.193.234.131]) dropping: got pre-prompt data:
Sep 2 16:03:51 fcgp02.mail.nic.ru Sep 02 16:03 fcgp02.nicmail.ru 16:03:51.306 1 SMTPI-073085([212.193.234.131]) dropping: got pre-prompt data:

Судя по данным сообщениям, Ваш скрипт отправляет данные одним потоком, не дожидаясь ответа сервера. В данной ситуации рекомендуем обратиться к разработчику скрипта для настройки ожидания ответа от SMTP-сервера во время сессии отправки.


Кто-то знает как решить такую проблемку?
 
 
1Bot
Отправлено: 3 сентября 2014 — 14:00
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 773
Дата рег-ции: Апр. 2009  
Откуда: Днепропетровск
Репутация: 69




Gori пишет:
Sep 2 16:03:51 fcgp02.mail.nic.ru Sep 02 16:03 fcgp02.nicmail.ru 16:03:51.306 1 SMTPI-073085([212.193.234.131]) dropping: got pre-prompt data:

Судя по данным сообщениям, Ваш скрипт отправляет данные одним потоком, не дожидаясь ответа сервера. В данной ситуации рекомендуем обратиться к разработчику скрипта для настройки ожидания ответа от SMTP-сервера во время сессии отправки.


Нужно добавить для сокета возможные задержки при передаче (добавить в код строку для возможных задержек)

CODE:
if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP))
{
$tval = 3; // максимальное количество времени ожидания ответа сервера в секундах
socket_set_timeout($SMTPIN, $tval, 0);
...

(Добавление)
и вместо
CODE:
fgets ( $SMTPIN, 1024 );

нужно использовать
CODE:
$data = "";
while($str = fgets($SMTPIN,515)) {
$data .= $str;
# if the 4th character is a space then we are done reading so just break the loop
if(substr($str,3,1) == " ") { break; }
}

в $data и будут считанные данные
 
 
Gori
Отправлено: 7 сентября 2014 — 08:20
Post Id


Пользователь
Full Member


Покинул форум
Сообщений всего: 165
Дата рег-ции: Сент. 2013  
Репутация: 2




Спасибо!
 
 
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« PHP/Perl »

> Похожие темы: SMTP авторизация на PHP
Темы Форум Информация о теме Обновление
Отправка почты с форума через внешний SMTP
Решение проблем Ответов: 0
Автор темы: Сергей
18 августа 2009 — 05:57
Автор: Сергей
Отправка почты SMTP
Настроил отправку почты через SMTP, не везде работает
Обсуждаем Ответов: 2
Автор темы: kolesnik39
15 апреля 2012 — 16:02
Автор: kolesnik39
Мод: Регистрация и авторизация со сторонних ресурсов (Loginza)
Быстрая регистрация, вход на форум через социальные сети и другие популярные сайты
Модификации и дополнения Ответов: 300
Автор темы: Defenderyk
20 января 2015 — 10:31
Автор: variant0
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.055]     [ ]