<?php mail(); ?> и Яндекс
Отправляю почту с помощью функции
<?php mail(); ?>
Код:
@mail(test@site.ru,"Проверка связи",$message,
"From: ADMIN <mysite@yandex.ru>\nContent-Type: text/plain; charset=\"windows-1251\"");
"From: ADMIN <mysite@yandex.ru>\nContent-Type: text/plain; charset=\"windows-1251\"");
И вот что заметил, письм на мой ящик на Яндексе приходят не всегда
А это зависит от темы и содержания письма
Например
Код:
$message="Для активации Имени и Пароля перейдите по ссылке\n\n http://www.mysite.ru/password.php?action=activ&rnd=$rnd \n\n
Данное сообщение сгенерировано роботом системы.\n С уважением справочная служба MySite";
Данное сообщение сгенерировано роботом системы.\n С уважением справочная служба MySite";
Доходят стабильно
А например
$message="Вы получили это сообщение потому что разместили информацию \n в одном из разделов сайта MySite.ru";
Код:
$message=$message."\n-----------------------------------------\n";
$message=$message."Для вас есть Личное сообщение\n Вы можете его прочитать в разделе личных сообщений сайта\n http://mysite.ru/messages/";
$message=$message."Для вас есть Личное сообщение\n Вы можете его прочитать в разделе личных сообщений сайта\n http://mysite.ru/messages/";
Не доходят до моего ящика на Яндексе вообще
А приятель расссказывал что письма с его сайта в которых встречается слово SEX тоже на Яндек ящики не доходят
Кто нибудь с таким сталкивался..
Все сталкивались. Антиспам яндекса называется. Колдовать над заголовком, чтобы он проходил. Ну или поискать в сети по методу обходов антиспама (ну или борьбы с ним).
Код:
function qp_encode( $input = "", $line_max = 76, $space_conv = true ) {
GLOBAL $LANG;
$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
$lines = preg_split("/(?:\r\n|\r|\n)/", $input);
$eol = "?=\r\n\t";
$escape = "=";
$output = "";
$charset = "=?".$LANG["charset"]."?Q?";
while( list(, $line) = each($lines) ) {
$linlen = strlen($line);
$newline = "";
for($i = 0; $i < $linlen; $i++) {
$c = substr( $line, $i, 1 );
$dec = ord( $c );
if ( ( $i == 0 ) && ( $dec == 46 ) ) {
$c = "=2E";
}
if ( $dec == 32 ) {
if ( $i == ( $linlen - 1 ) ) {
$c = "_";
} else if ( $space_conv ) {
$c = "_";
}
} elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) {
$h2 = floor($dec/16);
$h1 = floor($dec%16);
$c = $escape.$hex["$h2"].$hex["$h1"];
}
if ( (strlen($newline) + strlen($c)) >= $line_max ) {
$output .= $charset.$newline.$eol;
$newline = "";
if ( $dec == 46 ) {
$c = "=2E";
}
}
$newline .= $c;
} // end of for
$output .= $charset.$newline.$eol;
} // end of while
return trim(str_replace("\r\n","\n",$output));
}
$result=mail(test@site.ru,
qp_encode("Проверка связи"),
$message,
"From: ADMIN <mysite@yandex.ru>\nContent-Type: text/plain; charset=\"windows-1251\"",
"-fmysite@yandex.ru");
if (!$result) print "Не удалость поставить в очередь на отправку.";
GLOBAL $LANG;
$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
$lines = preg_split("/(?:\r\n|\r|\n)/", $input);
$eol = "?=\r\n\t";
$escape = "=";
$output = "";
$charset = "=?".$LANG["charset"]."?Q?";
while( list(, $line) = each($lines) ) {
$linlen = strlen($line);
$newline = "";
for($i = 0; $i < $linlen; $i++) {
$c = substr( $line, $i, 1 );
$dec = ord( $c );
if ( ( $i == 0 ) && ( $dec == 46 ) ) {
$c = "=2E";
}
if ( $dec == 32 ) {
if ( $i == ( $linlen - 1 ) ) {
$c = "_";
} else if ( $space_conv ) {
$c = "_";
}
} elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) {
$h2 = floor($dec/16);
$h1 = floor($dec%16);
$c = $escape.$hex["$h2"].$hex["$h1"];
}
if ( (strlen($newline) + strlen($c)) >= $line_max ) {
$output .= $charset.$newline.$eol;
$newline = "";
if ( $dec == 46 ) {
$c = "=2E";
}
}
$newline .= $c;
} // end of for
$output .= $charset.$newline.$eol;
} // end of while
return trim(str_replace("\r\n","\n",$output));
}
$result=mail(test@site.ru,
qp_encode("Проверка связи"),
$message,
"From: ADMIN <mysite@yandex.ru>\nContent-Type: text/plain; charset=\"windows-1251\"",
"-fmysite@yandex.ru");
if (!$result) print "Не удалость поставить в очередь на отправку.";
1) В теме нельзя использовать кирилицу. Ее нужно сначала закодировать в Quoted Printable. Антиспам может блокировать письма с кривым заголовком.
2) Добавлен параметр -f передающийся sendmail. Устанавливает заголовок письма Return-Path. Антиспам может блокировать если Return-Path не совпадает с From.
У меня начали отправляться без перекодировки когда я
вместо
"From: ADMIN <mysite@yandex.ru>
Написал
"From: ADMIN <admin@mysite.ru>