2016-02-05 85 views
-1

我正在完成我的项目,但似乎无法看到我的PHP表单上出错的位置。对我来说一切都是正确的,但我得到一个错误。PHP表单上的字符串/数组错误

Warning: mail() expects parameter 4 to be string, array given in /customers/f/a/b/webpx.be/httpd.www/sendemail.php on line 15

我的PHP形式:

<?php 
$name  = @trim(stripslashes($_POST['name'])); 
$email  = @trim(stripslashes($_POST['email'])); 
$message = @trim(stripslashes($_POST['message'])); 
$to   = '[email protected]';//replace with your email 

$headers = array(); 
$headers[] = "MIME-Version: 1.0"; 
$headers[] = "Content-type: text/plain; charset=iso-8859-1"; 
$headers[] = "From: {$name} <{$from}>"; 
$headers[] = "Reply-To: <{$from}>"; 
$headers[] = "Subject: {$subject}"; 
$headers[] = "X-Mailer: PHP/".phpversion(); 

mail($to, $subject, $message, $headers); 

die; 

?> 

<?php 
if ($_POST['submit']) { 
    if (mail($to, $subject, $message, $headers)) { 
     echo '<p>Thank you for your Email! We will contact you very soon.</p>'; 
    } 
    else { 
     echo '<p>Oops! An error occurred. Try sending your message again.</p>'; 
    } 
} 
?> 

<style type="text/css"> 
    p{text-align:center;font-size:50px;background:#0091a2;margin-top:30px;padding:20px;width:500px;margin:0 auto;color:#fff} 
</style> 

我的HTML:

<form method="post" action="sendemail.php" onsubmit="return validation();"> 
          <div class="row"> 
           <div class="form-group col-md-6"> 
            <input type="text" name="name" class="form-control" placeholder="voornaam + familienaam" required="required"> 
           </div> 
           <div class="form-group col-md-6"> 
            <input type="email" name="email" class="form-control" placeholder="e-mail" required="required"> 
           </div> 
           <div class="form-group col-md-12"> 
            <textarea rows="6" name="message" class="form-control" placeholder="Uw boodschap ..." required="required"></textarea> 
           </div> 
           <div class="form-group col-md-12"> 
            <button type="submit" class="btn btn-lg btn-dark-bg" data-loading-text="Sending...">Verstuur bericht</button> 
           </div> 
          </div> 
         </form> 

我认为这可能是错误的,唯一的事情是 “到” 我的形式。请有人指出我正确的方向吗?

Thx提前!

+0

从错误$头应该是字符串不是数组。 – Drudge

+0

'邮件($ to,$ subject,$ message,implode(“\ n”,$ headers));'这应该工作,我猜。 – Jigar

+0

从来没有见过更清晰,更明了的错误信息...ಠ_ಠ – deceze

回答

3

$headers在数组中,它需要是一个字符串。每个标题应该用新行分隔。所以implode()你的字符串换行符:

$headers = array(); 
$headers[] = "MIME-Version: 1.0"; 
$headers[] = "Content-type: text/plain; charset=iso-8859-1"; 
$headers[] = "From: {$name} <{$from}>"; 
$headers[] = "Reply-To: <{$from}>"; 
$headers[] = "Subject: {$subject}"; 
$headers[] = "X-Mailer: PHP/".phpversion(); 
$headers = implode("\r\n", $headers); 

mail($to, $subject, $message, $headers); 
+0

拼写检查。 '$ heraders' =>'$ headers' – Jigar

+0

@Jigar感谢您的领导 –

+0

也可能是“听众”;-)在牛? hehe hiya约翰 –