2014-01-25 2 views
0

У меня есть некоторые проблемы с этим, кто-нибудь знает, почему это не сработает? У меня есть эта страница, где он использует этот скрипт для отправки электронной почты, но это не сработает. Когда я звоню, я должен получить отправленное электронное письмо, но он просто запускается без ошибок.Php email script failed

<?php 
$emailTo = 'youremail'; 
$siteTitle = 'SiteTitle'; 

//error_reporting(E_ALL^E_NOTICE); // hide all basic notices from PHP 

//If the form is submitted 
if(isset($_POST['submitted'])) { 
    $hasError = false; 
    // require a name from user 
    if(trim($_POST['contactName']) === '') { 
     $nameError = 'name plz!'; 
     $hasError = true; 
    } else { 
     $name = trim($_POST['contactName']); 
    } 

    // need valid email 
    if(trim($_POST['email']) === '') { 
     $emailError = 'Forgot Email?'; 
     $hasError = true; 
    } else if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", trim($_POST['email']))) { 
     $emailError = 'It's not right fool'; 
     $hasError = true; 
    } else { 
     $email = trim($_POST['email']); 
    } 

    // we need at least some content 
    if(trim($_POST['comments']) === '') { 
     $commentError = 'Forgot something='; 
     $hasError = true; 
    } else { 
     if(function_exists('stripslashes')) { 
      $comments = stripslashes(trim($_POST['comments'])); 
     } else { 
      $comments = trim($_POST['comments']); 
     } 
    } 

    // upon no failure errors let's email now! 
    if(!isset($hasError)) { 

     $subject = 'New message to '.$siteTitle.' from '.$name; 
     $sendCopy = trim($_POST['sendCopy']); 
     $body = "Name: $name \n\nEmail: $email \n\nMessage: $comments"; 
     $headers = 'From: ' .' <'.$email.'>' . "\r\n" . 'Reply-To: ' . $email; 

     mail($emailTo, $subject, $body, $headers); 

     //Autoresponse 
     $respondSubject = 'Thank you for contacting '.$siteTitle; 
     $respondBody = "Your message to $siteTitle has been delivered! \n\nWe will answer back as soon as possible."; 
     $respondHeaders = 'From: ' .' <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $emailTo; 

     mail($email, $respondSubject, $respondBody, $respondHeaders); 

     // set our boolean completion value to TRUE 
     $emailSent = true; 
    } 
} 
?> 

ответ

3

Добавить \ в ', во всех вхождений

$emailError = 'It\'s not right fool'; 

вместо

$emailError = 'It's not right fool'; 
+0

Или '$ emailError =« Это не так, дурак »;' –

0

Вы должны экранировать все ' S с \ в строках, заключенных в ' с. Например, вам необходимо изменить $emailError = 'It's not right fool' на номер $emailError = 'It\'s not right fool'.

То же самое касается " с, когда заключено в ".

0

Вы сказали, что он работает без ошибок, поэтому это может быть не ошибка PHP. Вы убедились, что SMTP настроен правильно на вашем сервере? С новым кодом, который вы только что опубликовали, есть ли какие-либо новые ошибки?