function SendMail($email, $subject, $text) { $address = 'mail.iptm.ru'; // адрес smtp-сервера $port = 25; // порт (стандартный smtp - 25) // $from = '=?utf-8?b?' . base64_encode('Конференция «Рентгеновская оптика»') . '?= <*****@*****.**>'; // адрес отправителя $from = '*****@*****.**'; // адрес отправителя 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"); } $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 ' . $_SERVER['SERVER_NAME']); // Приветствуем сервер read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, 'MAIL FROM:<' . $from . '> BODY=8BITMIME'); // Задаем адрес отправителя read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, 'RCPT TO:<' . $email . '>'); // Задаем адрес получателя read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, 'DATA'); // Готовим сервер к приему данных read_smtp_answer($socket); // ответ сервера $header = "From: " . $from . "\r\n"; $header .= "To: " . $email . "\r\n"; $header .= "Subject: =?utf-8?b?" . base64_encode($subject) . "?=\r\n"; $header .= "Content-Type: text/plain; charset=\"utf-8\"\r\n"; $header .= "Content-Transfer-Encoding: base64\r\n"; $header .= "Mime-Version: 1.0\r\n"; $text = $header . base64_encode($text); write_smtp_response($socket, $text . "\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); } }
function mail_send($to, $subject, $src_message) { include 'mail_conf.php'; // Конфиг почтового сервера $message = iconv('cp1251', 'UTF-8', $src_message); $message = "Content-Type: text/plain; charset=UTF-8; format=flowed \r\nContent-Transfer-Encoding: 8bit \r\n\r\n" . $src_message; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // Создание сокета $result = socket_connect($socket, $cfg_address, $cfg_port); // Открываем сокет read_smtp_answer($socket); // Читаем информацию о сервере write_smtp_response($socket, 'EHLO ' . $cfg_address); // Приветствуем сервер read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, 'AUTH LOGIN'); // Делаем запрос авторизации read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, base64_encode($cfg_login)); // Отравляем логин read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, base64_encode($cfg_pwd)); // Отравляем пароль read_smtp_answer($socket); // ответ сервера write_smtp_response($socket, 'MAIL FROM:<' . $cfg_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 = "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); // ответ сервера if (isset($socket)) { socket_close($socket); } // Закрываем сокет }
function smtp_mail($to, $message, $headers, $arr) { /* $from адрес отправителя $to адрес получателя $headers заголовок сообщения $message текст сообщения */ $result = TRUE; $address = $arr['addres']; // адрес smtp-сервера $port = $arr['port']; // порт (стандартный smtp - 25) $login = $arr['login']; // логин к ящику $pwd = $arr['pwd']; // пароль к ящику $from = $arr['frommail']; //отправитель, для корректного отправления мессаг 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"); } // Соединяем сокет к серверу $protocol = '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"); } else { @($protocol .= "OK\n"); } // Читаем информацию о сервере read_smtp_answer($socket); // Приветствуем сервер write_smtp_response($socket, 'EHLO ' . $login); read_smtp_answer($socket); // ответ сервера //Если с авторизацией if (isset($login)) { if ($login !== "") { $protocol .= "Authentication ... "; // Делаем запрос авторизации 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); // ответ сервера $protocol .= "OK\n"; } } $protocol .= "Check sender address ... "; // Задаем адрес отправителя write_smtp_response($socket, 'MAIL FROM:<' . $from . '>'); read_smtp_answer($socket); // ответ сервера $protocol .= "OK\n"; $protocol .= "Check recipient address ... "; // Задаем адрес получателя write_smtp_response($socket, 'RCPT TO:<' . $to . '>'); read_smtp_answer($socket); // ответ сервера $protocol .= "OK\n"; $protocol .= "Send message text ... "; // Готовим сервер к приему данных write_smtp_response($socket, 'DATA'); read_smtp_answer($socket); // ответ сервера // Отправляем данные write_smtp_response($socket, $headers . $message . "\r\n."); read_smtp_answer($socket); // ответ сервера $protocol .= "OK\n"; $protocol .= 'Close connection ... '; // Отсоединяемся от сервера write_smtp_response($socket, 'QUIT'); read_smtp_answer($socket); // ответ сервера $protocol .= "OK\n"; } catch (Exception $e) { echo $protocol; echo "\nError: " . $e->getMessage(); $result = FALSE; } if (isset($socket)) { socket_close($socket); } return $result; }