2013-06-10 2 views
0

У меня есть форма на моем сайте:PHP электронной почты скрипт не работает правильно

<form name="contact" action="contact.php" method="post"> 
     <label for="name">Name:</label><br/><input type="text" name="name" id="name"><br/> 
     <label for="email">Email:</label><br/><input type="text" name="email" id="email"><br/> 
     <label for="comment">Question:</label><br/><textarea name="comment" id="comment"></textarea><br/> 
     <input type="submit" value="Send" id="submit"> 
     </form> 

Это сценарий, он передает полученные данные:

<?php 
header("Refresh: 3;url=http://www.xyz.com/"); 

if(isset($_POST['email'])) { 

    $email_to = "[email protected]"; 
    $email_subject = "Enquiry"; 


    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['name']) || 
     !isset($_POST['email']) || 
     !isset($_POST['comment'])){ 
     died('We are sorry, but there appears to be a problem with the form you submitted.');  
    } 

    $name = $_POST['name']; // required 
    $email = $_POST['email']; // required 
    $comment = $_POST['comment']; // required 

    $error_message = ""; 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    if(!preg_match($email_exp,$email)) { 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 

    if(strlen($comment) < 2) { 
    $error_message .= 'The Comments 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($name)."\n"; 
    $email_message .= "Email: ".clean_string($email)."\n"; 
    $email_message .= "Comment: ".clean_string($comment)."\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 --> 

Thank you for contacting us. We will be in touch with you very soon. 


<?php 
} 
?> 

По какой-то причине скрипт выводит, что сообщение был успешно отправлен, но когда я проверяю свой почтовый ящик, нет новых писем. Я не знаю, что происходит, может ли кто-нибудь мне помочь?

+0

Вы проверили журналы своего почтового сервера, чтобы узнать, что происходит? Почему вы подавляете вывод из 'mail()'? Есть ли что-нибудь в папке со спамом? – andrewsi

+0

Из любопытства ... Почему, по-вашему, вам нужно вырезать материал из «сообщения:» из тела сообщения? –

+0

@ ÁlvaroG.Vicario, если честно, я не автор этого сценария. Я просто взял его и адаптировал для удовлетворения моих потребностей с разрешения автора. – Javacadabra

ответ

3

функция почты имеет ошибки выключен

@mail($email_to, $email_subject, $email_message, $headers); 

удалить @ от этого и добавить простой, если

if(mail($email_to, $email_subject, $email_message, $headers)) 
{ 
    echo 'mail was sent'; //success message here 
} 
else 
{ 
    echo 'there were errors during sending mail'; //error message there 
} 

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

Вы можете установить некоторые функции настройки, влияющие на почту() в php.ini

Read more here.

Кроме того, это Thank you for contacting us. We will be in touch with you very soon. сообщение отображается всегда не проверяет, если что-то неправильно, это просто показано на рисунке.

+0

Да, я заметил, что там, спасибо за вашу помощь. Я сделал так, как вы предлагали, и я повторяю, что «Mail был отправлен», поэтому, возможно, мне просто нужно быть терпеливым, и письмо в конечном итоге появится в моем почтовом ящике ... – Javacadabra

+0

Кстати, зачем вам обновлять страницу каждые 3 с? – Robert

+0

Я положил это, потому что я хотел перенаправить пользователя на домашнюю страницу через 3 секунды. Я нашел ответ на вопрос на этом сайте, который предположил, что это способ сделать это – Javacadabra

Смежные вопросы