2017-02-28 72 views
0

我的表單按預期工作,但出於某種原因,電子郵件只會發送到我的一個電子郵件帳戶,而不是其他電子郵件地址,所以我不能將這個問題放在電子郵件字段中。看我要去哪裏錯我假設這是因爲我使用$電子郵件搶到電子郵件地址第二封電子郵件假設去...這裏是我的PHP我在哪裏出錯了?發送表單郵件給多個人PHP?

<?php 
    $from = 'Pixel Wars - Press Inquiry'; 
    $to = "[email protected], $email"; 
    $subject = 'Press Inquiry from Pixelwars.com'; 

    function errorHandler ($message) { 
     die(json_encode(array(
      'type'  => 'error', 
      'response' => $message 
     ))); 
    } 

    function successHandler ($message) { 
     die(json_encode(array(
      'type'  => 'success', 
      'response' => $message 
     ))); 
    } 


    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $message = $_POST['message']; 
     $body = "Name: $name\r\n Email: $email\r\n\r\n Message:\r\n $message"; 

     $pattern = '/[\r\n]|Content-Type:|Bcc:|Cc:/i'; 
     if (preg_match($pattern, $name) || preg_match($pattern, $email) || preg_match($pattern, $message)) { 
      errorHandler('Header injection detected.'); 
     } 

     // Check if name has been entered 
     if (!$_POST['name']) { 
      errorHandler('Please enter your name.'); 
     } 

     // Check if email has been entered and is valid 
     if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
      errorHandler('Please enter a valid email address.'); 
     } 

     // Check if message has been entered 
     if (!$_POST['message']) { 
      errorHandler('Please enter your message.'); 
     } 

     // prepare headers 
     $headers = 'MIME-Version: 1.1' . PHP_EOL; 
     $headers .= 'Content-type: text/plain; charset=utf-8' . PHP_EOL; 
     $headers .= "From: $name <$email>" . PHP_EOL; 
     $headers .= "Return-Path: $to" . PHP_EOL; 
     $headers .= "Reply-To: $email" . PHP_EOL; 
     $headers .= "X-Mailer: PHP/". phpversion() . PHP_EOL; 

     // send the email 
     $result = @mail($to, $subject, $body . "\r\n\n" .'------------------ '. "\r\n\n" .'Hello '.$name.' we will contact you as soon as possible about your query.' ."\n". 'Dont forget to keep visiting www.pixelwars.com for more updates and awesome content.' ."\n". 'We will email you back on the provided email below, thank you and have a nice day.' . "\r\n\n" .'-- '.$email, $headers); 
     if ($result) { 
      successHandler('Thank You! we will be in touch'); 
     } else { 
      errorHandler('Sorry there was an error sending your message.'); 
     } 
    } else { 
     errorHandler('Allowed only XMLHttpRequest.'); 
    } 
?> 

謝謝你在前進,如果任何人都可以破解它

+0

的可能的複製[PHP郵件發送到多個電子郵件地址(http://stackoverflow.com/questions/4506078/ph​​p-send-mail-to-multiple-email-addresses) –

+0

@JamesHunt我不認爲它是重複的--OP的語法已經到位,但它不是很正確 - 你引用的問題是關於如何創建符合他們需求的代碼的問題。 –

+0

我認爲你的問題正如@ chris85所述,'$ email'變量不存在。嘗試將這三個聲明移到文檔的開頭。 –

回答

4

你不必當你定義$to所以你的第二個地址沒有設置$email分配。

演示:https://3v4l.org/QIIJu

解決方案,在腳本以後移動$to分配。也使用錯誤報告,這將引發未定義的變量通知。

例如

<?php 
$from = 'Pixel Wars - Press Inquiry'; 
$subject = 'Press Inquiry from Pixelwars.com'; 
.... 

$to = "[email protected], $email"; 
$result = @mail($to, $subject, $body .... 

因爲此時$email被定義。也不要使用錯誤抑制,這只是隱藏有用的信息。如果您不希望它顯示隱藏錯誤顯示,但仍然記錄它們。

+0

我同意,在開發過程中錯誤報告可以是一個巨大的節省時間。但是,如果有疑問,請回應一下。 OP會從回聲中看到第一個電子郵件地址旁邊沒有任何內容正在打印。 –

+0

謝謝,在PHP的頂部和$ email一起定義名稱和消息是否明智? –

+0

@Neths如果未設置,您將收到未定義的通知,但這是我的首選工作地點。如果沒有任何事情發生,如果它不是一個AJAX請求,那麼我會將'if(isset($ _ SERVER ['HTTP_X_REQUESTED_WITH'])&& $ _SERVER ['HTTP_X_REQUESTED_WITH'] =='XMLHttpRequest'){'開始。 – chris85

相關問題