[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отправка писем с сайта
ДиммКа
возможно ли отправить письмо с сайта если на хосте отключена или не работает функция mail() ? если да, то как?



Спустя 2 минуты, 35 секунд (17.07.2010 - 19:52) qpayct написал(а):
самому прописать почтовый сервер )

Спустя 17 минут, 14 секунд (17.07.2010 - 20:09) Nikitian написал(а):
Отправка через сторонний smtp

function get_data($smtp_conn)
{
$data="";
while($str = fgets($smtp_conn,515))
{
$data .= $str;
if(substr($str,3,1) == " ") { break; }
}

return $data;
}
function send_mail($toname,$toemail,$subject,$message,$fromname,$fromemail)
{
$fromserver="ваш smtp-сервер";//Без приставки "smtp."
$fromemail='ваш email';//Он же логин для авторизации на smtp
$frompassword='ваш пароль';
$header="Date: ".date("D, j M Y G:i:s")." +0300\r\n";
$header.='From: =?windows-1251?B?'.base64_encode($fromname).'?= <'.$fromemail.">\r\n";
$header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n";
$header.="Reply-To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($fromname)))."?= <".$fromemail.">\r\n";
$header.="X-Priority: 3 (Normal)\r\n";
$header.="Message-ID: <172562218.".date("YmjHis")."@".$fromserver.">\r\n";
$header.="To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($toname)))."?= <".$toemail.">\r\n";
$header.="Subject: =?windows-1251?B?".base64_encode($subject)."?=\r\n";
$header.="MIME-Version: 1.0\r\n";
$header.="Content-Type: text/html; charset=windows-1251\r\n";
$header.="Content-Transfer-Encoding: 8bit\r\n";

$text=$message;

$smtp_conn = fsockopen("smtp.".$fromserver, 25,$errno, $errstr, 10);
if(!$smtp_conn) {print "соединение с серверов не прошло"."smtp.".$fromserver; fclose($smtp_conn); exit;}
$data = get_data($smtp_conn);
fputs($smtp_conn,"EHLO ".$fromserver."\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 250) {print "ошибка приветсвия EHLO"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"AUTH LOGIN\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 334) {print "сервер не разрешил начать авторизацию"; fclose($smtp_conn); exit;}

fputs($smtp_conn,base64_encode($fromemail)."\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 334) {print "ошибка доступа к такому юзеру ".$fromemail; fclose($smtp_conn); exit;}


fputs($smtp_conn,base64_encode($frompassword)."\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 235) {print "не правильный пароль"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"MAIL FROM:".$fromemail."\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 250) {print "сервер отказал в команде MAIL FROM"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"RCPT TO:".$toemail."\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"DATA\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 354) {print "сервер не принял DATA"; fclose($smtp_conn); exit;}

fputs($smtp_conn,$header."\r\n".$text."\r\n.\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 250) {print "ошибка отправки письма"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"QUIT\r\n");
fclose($smtp_conn);

return true;
}
Быстрый ответ:

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