[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Syntax error и Exception
skiph
Сдернул функцию:

function read_smtp_answer($socket) {
$read = socket_read($socket, 1024);

if ($read{0} != '2' && $read{0} != '3') {
if (!empty($read)) {
throw new Exception("SMTP failed: ".$read."\n");
} else {
throw new Exception('Unknown error'."\n");
}
}
}


Но, при запуске модуля (функция даже не запускается) выдается ошибка
PHP Parse error: syntax error, unexpected T_NEW на 8-ю строку.
8-я строка - это throw new Exception("SMTP failed...
В чем может быть проблема?



Спустя 1 час, 2 минуты, 1 секунда (18.05.2010 - 08:26) twin написал(а):
Прям вот так взял и сдернул? А что это и зачем - не разбирался?
А как же она будет работать, если ты не знаешь даже, что оно должно делать...
try там где то рядом есть?

Спустя 34 минуты, 33 секунды (18.05.2010 - 09:00) skiph написал(а):
Код этот распространялся в открытую. Под термином "сдернул" подразумевается, что это не я написал. Но я представляю, что это, и как должно работать.
Try рядом есть, но в соседней процедуре, из которой и вызывается read_smtp_answer:
function send_mail($to, $subject, $message, $head) {
$address = 'adress';
$port = 25;
$login = 'mail';
$pwd = 'password';
$from = 'mail@domen.ru';

try {
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
}

// Соединяем сокет к серверу
echo 'Connect to \''.$address.':'.$port.'\' ... ';
$result = socket_connect($socket, $address, $port);
if ($result === false) {
throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."\n");
}
// Читаем информацию о сервере
read_smtp_answer($socket);
// Приветствуем сервер
write_smtp_response($socket, 'EHLO '.$login);
read_smtp_answer($socket); // ответ сервера
// Делаем запрос авторизации

write_smtp_response($socket, 'AUTH LOGIN');
read_smtp_answer($socket); // ответ сервера
// Отравляем логин

write_smtp_response($socket, base64_encode($login));
read_smtp_answer($socket); // ответ сервера

// Отравляем пароль

write_smtp_response($socket, base64_encode($pwd));
read_smtp_answer($socket); // ответ сервера
// Задаем адрес отправителя

write_smtp_response($socket, 'MAIL FROM:<'.$from.'>');
read_smtp_answer($socket); // ответ сервера

// Задаем адрес получателя

write_smtp_response($socket, 'RCPT TO:<'.$to.'>');
read_smtp_answer($socket); // ответ сервера

// Готовим сервер к приему данных

write_smtp_response($socket, 'DATA');
read_smtp_answer($socket); // ответ сервера

// Отправляем данные

$message = "$head\r\n\r\n".$message;
$message = "FROM: $from\r\n".$message;
$message = "To: $to\r\n".$message;
$message = "Subject: $subject\r\n".$message;
write_smtp_response($socket, $message."\r\n.");
read_smtp_answer($socket);

// Отсоединяемся от сервера
write_smtp_response($socket, 'QUIT');
read_smtp_answer($socket); // ответ сервера

} catch (Exception $e) {
echo "\nError: ".$e->getMessage();
}

if (isset($socket)) {
socket_close($socket);
}

}

Спустя 59 минут, 5 секунд (18.05.2010 - 09:59) skiph написал(а):
Вопрос снимается. у меня php4

Спустя 44 минуты, 22 секунды (18.05.2010 - 10:44) waldicom написал(а):
Цитата (twin @ 18.05.2010 - 07:26)
Прям вот так взял и сдернул? А что это и зачем - не разбирался?
А как же она будет работать, если ты не знаешь даже, что оно должно делать...
try там где то рядом есть?

А для чего там try должен быть?

Спустя 17 часов, 23 минуты, 40 секунд (19.05.2010 - 04:07) skiph написал(а):
Ну, чтобы открытый сокет закрывался при любом исходе
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.