2017-02-28 75 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

相关问题