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 там где то рядом есть?
А как же она будет работать, если ты не знаешь даже, что оно должно делать...
try там где то рядом есть?
Спустя 34 минуты, 33 секунды (18.05.2010 - 09:00) skiph написал(а):
Код этот распространялся в открытую. Под термином "сдернул" подразумевается, что это не я написал. Но я представляю, что это, и как должно работать.
Try рядом есть, но в соседней процедуре, из которой и вызывается read_smtp_answer:
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 написал(а):
Ну, чтобы открытый сокет закрывался при любом исходе