Отправка письма чрз smtp на mail.ru

W
На сайте с 03.06.2009
Offline
95
982

Помогите, пожалуйста. Мой следующий код отправляет письма на почтовые ящики, типа yandex, gmail и т.д, кроме mail.ru. Иногда с нового сайта он отправляет первый раз, кривое отображение при разных кодировках. Второй и последующие разы уже не шлет. В чем может быть причина? Какое может быть решение?


$sendto = 'mail@mail.ru';
$sitesender = 'Обратная связь';
$emailer = 'smtp.yandex.ru';
$emailernum = '25';
$loginemail = 'mylogin';
$passemail = 'mypass';

$nick = 'noreply@site.ru';

function sendmail($mail,$subject,$message,$headers) {
if(mail($mail,$subject,$message,$headers)) { return TRUE;}
else {return FALSE;}
}

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

$header="Date: ".date("D, j M Y G:i:s")." +0700\r\n";
$header.="From: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode($nick)))."?= <".$nick.">\r\n";
$header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n";
$header.="Reply-To: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode($nick)))."?= <".$nick.">\r\n";
$header.="X-Priority: 3 (Normal)\r\n";
$header.="Message-ID: <172562218.".date("YmjHis").$nick.">\r\n";
$header.="To: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode($sendto)))."?= <".$sendto.">\r\n";
$header.="Subject: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode($sitesender)))."?=\r\n";
$header.="MIME-Version: 1.0\r\n";
$header.="Content-Type: text/html; charset=utf-8\r\n";
$header.="Content-Transfer-Encoding: 8bit\r\n";

$text='Сообщение...';

$smtp_conn = fsockopen($emailer,$emailernum,$errno, $errstr, 10);
if(!$smtp_conn) {print "соединение с серверов не прошло"; fclose($smtp_conn); exit;}
$data = get_data($smtp_conn);
fputs($smtp_conn,"EHLO mail.ru\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($loginemail)."\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 334) {print "ошибка доступа к такому юзеру"; fclose($smtp_conn); exit;}
fputs($smtp_conn,base64_encode($passemail)."\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 235) {print "не правильный пароль"; fclose($smtp_conn); exit;}
fputs($smtp_conn,"MAIL FROM:".$loginemail."\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:".$sendto."\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);
свежая кровь
SeVlad
На сайте с 03.11.2008
Offline
1609
#1
wadyaruss:
В чем может быть причина? Какое может быть решение?

Маил.ру, в отличии от остальных, требует какой-то заголовок (я не помню какой). В хелпах должно быть.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий