yura3d |
Отправлено: 8 июля 2009 — 10:59
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
Vasyanchik пишет:Ну а почему же тогда с консоли уходит а с форума нет? Я решил что блокируют как спам потому что тут же приходит ответ что письмо не доставлено и сервер mail.ru ругается: unknown HELO И просит посетить их страничку http://mail.ru/notspam А из консоли всё отлично уходит и приходит...
Проблема заключается в заголовках, которые Ваш SMTP-сервер (в данном случае sendmail) отправляет серверу mail.ru. Контроллировать отправку SMTP-команд между серверами на уровне PHP нельзя, скрипты (в том числе форум) просто вызывают стандартную функцию для отправки писем, а уже само письмо формируется и отправляется согласно настройкам PHP-интерпретатора и sendmail. Судя по всему, mail.ru ругается на hostname Вашего сервера, который передаёт sendmail в команде HELO |
|
|
Александр Васёвич |
Отправлено: 22 декабря 2010 — 23:14
|
Newbie
Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2010
Репутация: 1
|
В файле fm.class.php функция отправки e-mail выглядит так, как приведено ниже. Ошибок вроде нет. Но сообщения не отправляются.
/*
_SendMail функция отправки e-mail через sendmail сервера
*/
1 (Отобразить)CODE:function _SendMail($list) {
$headers = 'From: '.$list[0].' <'.$list[1].">\n";
$headers .= 'Reply-To: '.$list[1]."\n";
$headers .= 'Return-Path: '.$list[1]."\n";
$headers .= "MIME-Version: 1.0\nContent-type: text/plain; charset=windows-1251\nContent-Transfer-Encoding: 8bit\nDate: " . gmdate('D, d M Y H:i:s', time()) . " UT\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\n";
$skip_mails = (file_exists(FM_SKIP_MAILS)) ? file(FM_SKIP_MAILS):array();
if (count($skip_mails) !== 0) {
unset($skip_mails[0]);
$skip_mails = preg_replace("#(\r\n|\|$)#","",trim(implode("|",$skip_mails)));
} else {
$skip_mails = "@";
}
$users = $this->_Read(FM_USERS);
if (is_array($list[2])) {
@set_time_limit(360);
foreach ($list[2] as $user_id => $flag) {
if (isset($users[$user_id]) && !preg_match("#(".$skip_mails.")$#is",$users[$user_id]['m'])) {
mail($users[$user_id]['m'], $list[3], $list[4], $headers);
}
}
} else {
if (!preg_match("#(".$skip_mails.")$#is",$list[2])) {
mail($list[2], $list[3], $list[4], $headers);
}
}
} |
|
|
Александр Васёвич |
Отправлено: 24 декабря 2010 — 21:33
|
Newbie
Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2010
Репутация: 1
|
Александр Васёвич пишет:В файле fm.class.php функция отправки e-mail выглядит так, как приведено ниже. Ошибок вроде нет. Но сообщения не отправляются.
/*
_SendMail функция отправки e-mail через sendmail сервера
*/
1 (Отобразить)CODE:function _SendMail($list) {
$headers = 'From: '.$list[0].' <'.$list[1].">\n";
$headers .= 'Reply-To: '.$list[1]."\n";
$headers .= 'Return-Path: '.$list[1]."\n";
$headers .= "MIME-Version: 1.0\nContent-type: text/plain; charset=windows-1251\nContent-Transfer-Encoding: 8bit\nDate: " . gmdate('D, d M Y H:i:s', time()) . " UT\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\n";
$skip_mails = (file_exists(FM_SKIP_MAILS)) ? file(FM_SKIP_MAILS):array();
if (count($skip_mails) !== 0) {
unset($skip_mails[0]);
$skip_mails = preg_replace("#(\r\n|\|$)#","",trim(implode("|",$skip_mails)));
} else {
$skip_mails = "@";
}
$users = $this->_Read(FM_USERS);
if (is_array($list[2])) {
@set_time_limit(360);
foreach ($list[2] as $user_id => $flag) {
if (isset($users[$user_id]) && !preg_match("#(".$skip_mails.")$#is",$users[$user_id]['m'])) {
mail($users[$user_id]['m'], $list[3], $list[4], $headers);
}
}
} else {
if (!preg_match("#(".$skip_mails.")$#is",$list[2])) {
mail($list[2], $list[3], $list[4], $headers);
}
}
}
Проблема решилась при согласовании с представителем хостинга!
Напроказничали, однако! |
|
|
kitNest |
Отправлено: 20 июля 2011 — 06:06
|
Full Member
Покинул форум
Сообщений всего: 185
Дата рег-ции: Дек. 2010
Репутация: 6
|
маленькое дополнение.
если кто-то работает на хостинге под виндой, то в среде smtp сервера на iis6 при возникновении (хотя чего ей возникать если работало =) ) ошибки SMTP server response: 501 5.5.4 Invalid Address код надо немного поправить в fm.class.php
CODE:function _SendMail($list) {
$headers = 'From: '.$list[0].' <'.$list[1].">\n";
изменить на
CODE:function _SendMail($list) {
$headers = "From: ".$list[0]." <".$list[1].">\n";
у меня iis6 не любит аргументацию в духе <'.$list[1]."> (Отредактировано автором: 20 июля 2011 — 07:43) |
|
|
kitNest |
Отправлено: 22 июля 2011 — 13:07
|
Full Member
Покинул форум
Сообщений всего: 185
Дата рег-ции: Дек. 2010
Репутация: 6
|
BON пишет:kitNest, а IIS 6 то причем? это всё дело пхп обрабатывает.
я же написал )
kitNest пишет:если кто-то работает на хостинге под виндой, то в среде smtp сервера на iis6
BON от некоторых аргументов php, которые передаются iis/smtp, последний шлет подальше в логах непечатным слогом ))
я как раз на случай, если у кого были\будут проблемы, для устранения легкого недопонимания между софтом бесплатным и платным "известных марок".
php по умолчанию вообще iis-у не известен, надо же руками прикручивать.
седьмую версию правда еще не видел - не читал, может microsoft и признал существование чего-то кроме asp/cgi в этом бренном мире )) |
|
|
|