<?php /* * Отправка письма по протоколу SMTP с авторизацией * автор: nc_soft * 07.02.08 */ //имя пользователя $smtp_username = 'user@mail.ru'; //порт $smtp_port = '25'; //smtp сервер $smtp_host = 'smtp.mail.ru'; //пароль $smtp_password = '**********'; //кодировка сообщений $smtp_charset = 'utf-8'; //От кого $smtp_from = 'от сайта snippets.pp.ru'; //тема $subject = 'тема сообщения'; //куда шлем $mail_to='user@mail.ru'; //открываем сокет $socket=fsockopen($smtp_host, $smtp_port); //так будем читать ответ после каждой посылки команды echo fgets($socket); //посылаем EHLO fputs($socket, "EHLO $smtp_host\r\n"); echo fgets($socket); echo fgets($socket); echo fgets($socket); echo fgets($socket); echo fgets($socket); //запрашиваем авторизацию fputs($socket, "AUTH LOGIN\r\n"); echo fgets($socket); //логин fputs($socket, base64_encode($smtp_username) . "\r\n"); echo fgets($socket); //пароль fputs($socket, base64_encode($smtp_password) . "\r\n"); echo fgets($socket); //от кого письмо fputs($socket, "MAIL FROM: <$smtp_username>\r\n"); echo fgets($socket); //получатель fputs($socket, "RCPT TO: <$mail_to>\r\n"); echo fgets($socket); //команда DATA говорит серверу что сейчас начнем передавать письмо fputs($socket, "DATA\r\n"); echo fgets($socket); //формируем письмо $msg=''; //заголовок указывает куда отвечать на письмо $msg .= "Reply-To: $smtp_username\r\n"; //версия mime $msg .= "MIME-Version: 1.0\r\n"; //mime тип и кодировка $msg .= "Content-Type: text/plain; charset=\"$smtp_charset\"\r\n"; //следует указать 8бит для русских символов $msg .= "Content-Transfer-Encoding: 8bit\r\n"; //поле от кого (можно вставить левые данные) $msg .= "From: \"$smtp_from\" <$smtp_username>\r\n"; //поле кому (тоже можно указать что угодно) $msg .= "To: $mail_to <$mail_to>\r\n"; //тема сообшения (закодирована в base64 чтобы нормально отображалась) $msg .= "Subject: =?UTF-8?B?" . base64_encode($subject) . "?=\r\n"; //приоритет $msg .= "X-Priority: 3\r\n\r\n"; //сообщение $msg .= "это тестовое сообщение\r\n"; //отправляем письмо (обратите внимание на \r\n.\r\n fputs($socket, $msg."\r\n.\r\n"); echo fgets($socket); /*письмо отправлено, лог ответов сервера выглядит так 220 mail.ru ESMTP Thu, 07 Feb 2008 03:32:20 +0300 250-mx34.mail.ru Hello smtp.mail.ru [217.8.236.128] 250-SIZE 31457280 250-8BITMIME 250-AUTH PLAIN LOGIN 250 PIPELINING 334 VXNlcm5hbWU6 334 UGFzc3dvcmQ6 235 Authentication succeeded 250 OK 250 Accepted 354 Enter message, ending with "." on a line by itself 250 OK id=1JMuge-0006sO-00 */ ?>