Я пытаюсь добавить контактную форму на веб-сайт, который отправляет данные формы на адрес электронной почты. Он отлично работает с любыми другими регистраторами электронной почты, такими как Gmail и Yahoo. но он не работает с электронными сообщениями с таким же именем домена (например: info@domain.com или support@domain.com).
Такая же форма работала отлично с godaddy deluxe хостинга, но теперь, когда я перешел на Godaddy CPanel linux хостинг-люкс, он не работает.
Прочтите следующий код, который я использую, и дайте мне знать, что нужно изменить. Ваши предложения приветствуются. Заранее спасибо.
Код:
<?php if(isset($_POST['email'])) { $email_to = "info@domain.com"; $email_subject = "Enquiry website"; function died($error) { // your error code can go here echo "We are very sorry, but there were error(s) found with the form you submitted. "; echo "These errors appear below.<br /><br />"; echo $error."<br /><br />"; echo "Please go back and fix these errors.<br /><br />"; die(); } // validation expected data exists if(!isset($_POST['author']) || !isset($_POST['email']) || !isset($_POST['subject']) || !isset($_POST['text'])) { died('We are sorry, but there appears to be a problem with the form you submitted.'); } $author = $_POST['author']; // required $email_from = $_POST['email']; // required $subject = $_POST['subject']; // required $text = $_POST['text']; // required $error_message = ""; $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; if(!preg_match($email_exp,$email_from)) { $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; } $string_exp = "/^[A-Za-z .'-]+$/"; if(!preg_match($string_exp,$author)) { $error_message .= 'The Name you entered does not appear to be valid.<br />'; } if(strlen($text) < 2) { $error_message .= 'The text you entered do not appear to be valid.<br />'; } if(strlen($error_message) > 0) { died($error_message); } $email_message = "Form details below.\n\n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "Name:".clean_string($author)."\n"; $email_message .= "Email:".clean_string($email_from)."\n"; $email_message .= "Subject:".clean_string($subject)."\n"; $email_message .= "Message:".clean_string($text)."\n"; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); @mail($email_to, $email_subject, $email_message, $headers); ?> <!-- include your own success html here --> <?php echo "<script type='text/javascript'>alert('$us Thank you for contacting us. We will get back to you very soon.')</script>"; echo "<script type='text/javascript'>window.location='index.html'</script>"; } ?>
Не уверен, что это было добавлено после этого сообщения, но вы действительно можете установить это самостоятельно в cPanel.
Если вы (или кто-либо) столкнетесь с этой ошибкой в будущем, простой телефонный звонок Go Daddy решит эту проблему. По умолчанию общий доступ к CPanel для Go Daddy настроен на доставку локального, а не удаленного. Если у вас есть электронная почта, установленная где-либо помимо внутренних учетных записей электронной почты cPanel, следующий тест внутри вашей панели управления будет определять, нужно ли запрашивать удаленную доставку по электронной почте:
В разделе электронной почты главной страницы cPanel выберите параметр «Email Trace» Введите адрес электронной почты вашего домена в поле «Адрес электронной почты получателя …» и выберите «Запустить отчет»,
Если на второй строке выводится сообщение «Черная дыра», тогда вы настроены на локальную доставку, обратитесь в отдел поддержки хостинга и попросите изменить дистанционную доставку. Вы будете работать в течение нескольких минут, если вы отметите, что выполнили этот тест перед вызовом.
У вас есть электронная почта, настроенная в этом домене. т.е. есть ли серверы MX локально или для другого провайдера?
php mailer / cPanel не будет проверять внешний DNS для своего собственного домена (если вы не сообщите об этом) при отправке почты, он просто отправит почту самому себе … Если вы не настроены локально на своем сервере для получения почты, тогда вы не получит электронное письмо.