Одна и таже форма отправки, но на одном сайте работает на другом нет

12
P
На сайте с 06.01.2009
Offline
601
1839

Здравствуйте. Сайты обслуживаются у разных хостеров.

Форма отправки заявки покупателя одинаковая. Е-майл на одном и том же сервере (mail.ru).

Но почему то на сайте №2 не хочет письмо отправленное с сайта приходить в почту. Какие могут быть варианты? К хостеру обратился, а он спрашивает

"Уточните, каким именно способом в скрипте отправляется почта? Укажите адрес этого

скрипта."

я даже не знаю что ему ответить. Я не спец, форма писалась давно.

87793
На сайте с 12.09.2009
Offline
661
#1

Имеет смысл код формы тут привести, может быть, по нему что-то можно будет сказать.

Наше дело правое - не мешать левому!
P
На сайте с 06.01.2009
Offline
601
#2

Форма в документе сериализуется скриптом, и передается в файл, код которого ниже.

Во второй строке специально поставил echo - проверил, данные передаются в файл.

Абсолютно идентичный код на другом сайте работает исправно - письмо отправляется.

На сайте №2, при нажатии "отправить" - сообщение что письмо отправлено, но оно не приходит.


$vbz = $_POST['vbz'];
echo $vbz;
parse_str($vbz, $forma555);
$_POST['name'] = $forma555['name'];
$_POST['telefon'] = $forma555['telefon'];
$_POST['gorod'] = $forma555['gorod'];
$_POST['email'] = $forma555['email'];
$_POST['message'] = $forma555['message'];
$otpravili=0;

error_reporting(E_ALL);

function checkmail($str)
{
//$badchars = "[ ]+| |\+|=|[|]|{|}|`|\(|\)|,|;|:|!|<|>|%|\*|/|'|\"|~|\?|#|\\$|\\&|\\^|www[.]";
$badchars = "[ ]+| |\+|=|[|]|{|}|`|\(|\)|,|;|:|!|<|>|%|\*|\/|'|\"|~|\?|#|\\$|\\&|\\^|www[.]";
//return (eregi($badchars,$str));
return (preg_match('/'.$badchars.'/i',$str));

}

function headerconv ($str)
{
$str = trim($str);
$str = stripslashes($str);

return $str;
}

function htmlconv ($str)
{

//if (get_magic_quotes_gpc):

$str = stripslashes($str);

//endif;

$str = str_replace("\"", "&quot;", $str);
$str = str_replace("<","&lt;",$str);
$str = str_replace(">","&gt;",$str);
$str = str_replace("\r\n", "\n", $str);
$str = str_replace("\r", "\n", $str);
$str = str_replace("\n", "<br>", $str);
$str = str_replace("\$", "***36;", $str);
$str = str_replace("|", "/", $str);
//$str = eregi_replace("(<br>*){2,}","<br><br>",$str);
$str = preg_replace("/(<br>*){2,}/i","<br><br>",$str);
//$str = eregi_replace("[ ]{2,}", " ", $str);
$str = preg_replace("/[ ]{2,}/", " ", $str);
$str = trim($str);

return $str;
}

include ($_SERVER['DOCUMENT_ROOT']."/zayavka/config.inc");

if ($config['inc_headers'] == "on"):

include ($config['header']);

endif;


if (isset($_GET['action'])){
$action=$_GET['action'];
}else{
$action='';
}


//if ($action != "send"):

if ($vbz == ""):
include ($_SERVER['DOCUMENT_ROOT']."/zayavka/form.php");

else:

//include ($_SERVER['DOCUMENT_ROOT']."/zayavka/form.php");
$form['name'] = $_POST['name'];
$form['telefon'] = $_POST['telefon'];
$form['gorod'] = $_POST['gorod'];
$form['email'] = $_POST['email'];
//$form['subject'] = $_POST['subject'];
$form['subject'] = 'с сайта plitka-concorde.ru';
$form['message'] = $_POST['message'];


if (isset($_POST['sendcopy'])){
$form['sendcopy']=$_POST['sendcopy'];
}else{
$form['sendcopy']='';
}

// телефон и город не проверяем на заполнение
if ($form['name'] == "" || $form['email'] == "" || $form['subject'] == "" || $form['message'] == ""):

$errorheader = "<p class=\"T\"><b>СООБЩЕНИЕ НЕ ОТПРАВЛЕНО!</b></p>";
$errormessage = "<p class=\"T\">Небыли заполнены следующие обязательные поля:</p>";
$errormessage .= "<ol>";

if ($form['name'] == ""): $errormessage .= "<li><p class=\"T\">Ваши Ф.И.О. или юр.название:</p></li>"; endif;
if ($form['email'] == ""): $errormessage .= "<li><p class=\"T\">Ваш E-Mail</p></li>"; endif;
if ($form['subject'] == ""): $errormessage .= "<li><p class=\"T\">Тема сообщения</p></li>"; endif;
if ($form['message'] == ""): $errormessage .= "<li><p class=\"T\">Текст сообщения</p></li>"; endif;

$errormessage .= "</ol>";
$errormessage .= "<p class=\"T\">Пожалуйста, попробуйте снова.</p>";

include ($_SERVER['DOCUMENT_ROOT']."/zayavka/error.inc");

else:

$header['subject'] = headerconv($form['subject']);
$header['name'] = headerconv($form['name']);

$form['name'] = htmlconv($form['name']);
$form['email'] = htmlconv($form['email']);
$form['subject'] = htmlconv($form['subject']);
$form['message'] = htmlconv($form['message']);

//if (!(eregi("([a-z0-9_\-\.])+@([a-z0-9_\-\.])+\.([a-z0-9_\-\.])+",$form['email'])) || checkmail($form['email'])):
if (!(preg_match("/([a-z0-9_\-\.])+@([a-z0-9_\-\.])+\.([a-z0-9_\-\.])+/i",$form['email'])) || checkmail($form['email'])):

$errorheader = "<p class=\"T\"><b>СООБЩЕНИЕ НЕ ОТПРАВЛЕНО!</b></p>";
$errormessage = "<p class=\"T\">Введенный вами адрес E-Mail (".$form['email'].") содержит
недопустимые символы или имеет неправильный формат.</p>";
$errormessage .= "<p class=\"T\">Пожалуйста, проверьте правильно ли пишете и попробуйте снова.</p>";

include ($_SERVER['DOCUMENT_ROOT']."/zayavka/error.inc");

else:

$contents = file($_SERVER['DOCUMENT_ROOT']."/zayavka/".$config['recip_file']);
$numlines = sizeof($contents);

for ($i=0;$i<$numlines;$i++) {
$contents[$i] = explode("|",$contents[$i]);
}


if ($form['sendcopy'] == "on"):

$form['send_to'] = $form['send_to'] . ", ";
$form['send_to'] .= $header['name']."<".$form['email'].">";

endif;

$sendmessage = "<html>
<head>
<title>".$form['subject']."</title>
</head>
<table border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"100%\">
<tr>
<td><font face=\"Verdana\" size=\"2\">".$form['message']."<br> указанное в форме имя:".$form['name']."<br> указанный в форме телефон: ".$form['telefon']."<br> указанный в форме город:".$form['gorod'];

if ($config['features'] == "on"):

$sendmessage .= "<br><br>----------------------
<br>Обозреватель: ".$_SERVER['HTTP_USER_AGENT']."
<br>Адрес IP: ".$_SERVER['REMOTE_ADDR'];

endif;

$sendmessage .= "</font></td>
</tr>
</table>
</body>
</html>";

$headers = "MIME-Version: 1.0\n";
$headers .= "From: ".$header['name']."<".$form['email'].">\n";
$headers .= "Content-Type: text/html; charset=".$config['charset']."\n";
$headers .= "X-Mailer: PHP/" . phpversion();

{
//set_time_limit(30);

if (mail('plitka-concorde@mail.ru', $header['subject'], $sendmessage, $headers)):

$okheader = "<p class=\"T\"><b>СООБЩЕНИЕ ОТПРАВЛЕНО!</b></p>";
$okmessage = "<p class=\"T\">Спасибо, ".$form['name'].", ваше сообщение успешно отправлено.
Мы постараемся ответить вам максимально оперативно.";

if ($form['sendcopy'] == "on"):

$okmessage .= "<p class=\"T\">На ваш E-Mail (".$form['email'].") послана копия письма. Через
несколько минут вы можете проверить свой почтовый ящик, чтобы убедиться, что отправка прошла успешно.</p>";

endif;

include ($_SERVER['DOCUMENT_ROOT']."/zayavka/ok.inc");

else:

$errorheader = "<p class=\"T\"><b>СООБЩЕНИЕ НЕ ОТПРАВЛЕНО!</b></p>";
$errormessage = "<p class=\"T\">Произошла непредвиденная ошибка при попытке
отправить сообщение.</p>";
$errormessage .= "<p class=\"T\">Пожалуйста, попробуйте снова.
Если ошибка будет повторяться, обратитесь к <b><a href=\"mailto:".$config['admin_email']."\">Вебмастеру</a></b>.</p>";

include ($_SERVER['DOCUMENT_ROOT']."/zayavka/error.inc");

endif;
}
endif;

endif;

endif;

if ($config['inc_headers'] == "on"):

include ($config['footer']);

endif;

if ($vbz != "" AND $otpravili==0):
include ($_SERVER['DOCUMENT_ROOT']."/zayavka/form.php");
endif;



DV
На сайте с 01.05.2010
Offline
644
#3

Дебажьте скрипт. Включайте вывод всех ошибок и пробуйте отправлять письма.

Если ничего не вылезет, добавьте строки с выводом переменных по логике.

Функция mail работает в коде.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
iqmaker
На сайте с 17.04.2012
Offline
309
#4

Попробуйте установить sendmail (если его нет) на сервер.

P
На сайте с 24.12.2010
Offline
46
#5

postavkin, одна из возможных причин. Для веб-домена, с которого отправляется почта, указан e-mail не локальный, а какой-нибудь plit*@mail.ru. mail.ru не любит этого. Думаю, причину нужно искать в логах почтового сервера.

дани мапов
На сайте с 06.09.2012
Offline
204
#6

Так проверить легко, вместо майл.ру поставить гмайл.

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
anser06
На сайте с 11.03.2006
Offline
292
#7

Лучше отправлять письма на ящик в своем домене. Тогда больше шансов, что дойдет.

P
На сайте с 06.01.2009
Offline
601
#8
Postfix:
postavkin, одна из возможных причин. Для веб-домена, с которого отправляется почта, указан e-mail не локальный, а какой-нибудь plit*@mail.ru. mail.ru не любит этого. Думаю, причину нужно искать в логах почтового сервера.

Извините, не совсем понял, т.е. почту сделать напимер plit*@yandex.ru ?

Да, проверил. Действительно, на почту yandex-а письмо приходит. Кто может подсказать, как решить проблему, т.к. надо чтобы письма приходили ни mail-овскую почту. Спасибо

---------- Добавлено 05.07.2014 в 11:40 ----------

Ребят, подскажите, пожалуйста ещё. Просто я хостеру написал проблему, они только сейчас ответили. Вот ответ

"Один из пользователей совершил спам рассылку и IP адрес сервера попал в блок лист. В настоящее время спамер заблокирован, заявка на разблокировку IP адреса подана и будет выполнена в ближайший рабочий день(или быстрее). "

А могу ли я что то сделать, чтобы больше такое не повторилось?

iqmaker
На сайте с 17.04.2012
Offline
309
#9
postavkin:
А могу ли я что то сделать, чтобы больше такое не повторилось?

использовать ip, с которых спам не рассылался. И далее арендовать (постоянно иметь) один и тот же ip, которым пользуетесь только вы.

R
На сайте с 08.04.2013
Offline
9
#10

Да это по-любому из-за хостинга. У них походу mail() не работает, а на первом работает. А скрипт видимо через него и шлет. Надо делать smtp отправку, что значит свалите вы с этого недоделанного хоста)

12

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