Example #1
0
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);
    }
}
Example #2
0
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);
    }
    // Закрываем сокет
}
Example #3
0
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;
}