2013-06-21 80 views
0

下面是我的提交表單的腳本。我收到電子郵件,但它包含的是IP地址和時間戳。我沒有收到任何其他列出的信息。我對PHP很陌生,所以任何幫助將不勝感激。另外,在電子郵件中,它是從d91b8401,[email protected]開始說的。有沒有辦法糾正?PHP腳本無法正確發送電子郵件

<?php 
include('database/config.php'); 
include('database/database.php'); 

$err = ''; 

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

    $first = addslashes(trim($_POST['first'])); 

    $last = addslashes(trim($_POST['last'])); 

    $glvar = addslashes(trim($_POST['glvar'])); 

    $ip = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; 
    //echo $ip; 

    if(($first!='')&& ($last!='')&& ($glvar!='')){ 

     $database = new Database(HOST, DATEBASE, USERNAME, PASSWORD); 

     $allUsers = $database->select('user','glvar_id','*',"glvar_id = '".$glvar."'"); 
     //echo $ip;  

     $checkglvar = 0;    
    $checkglvar = count($allUsers); 

     $userData = array(    
      'first_name' => $first, 
      'last_name' => $last,    
      'glvar_id' => $glvar,  
      'ip' => $ip,   

     );  

     if(!$checkglvar) {   

      $database->insert('user',$userData); 

      $message = "First Name: $first"; 
      $message = "Last Name: $last"; 
      $message = "GLVAR ID: $glvar"; 
      $message = "IP: $ip" . PHP_EOL; 
      $message .= "TIME: " . date('Y-m-d H:i:s'); 

      mail("[email protected]", "New Petition Signer", $message); 

      header('location:thank-you.html');  

     } else $err.='<p style="color:red">Ooops! You have already signed the petition</p>';   

    } else {  

     if($first=='') $err.='<p style="color:red">Your First Name is empty</p>'; 

     if($last=='') $err.='<p style="color:red">Your Last Name is empty</p>'; 

     if($glvar=='') $err.='<p style="color:red">Your GLVAR ID is empty</p>'; 

    } 

} 

?> 
+0

我個人認爲你錯過了'頭information'。你有'mail(「[email protected]」,「新的簽名簽名人」,$ message);' - 應該看起來像這樣的郵件(「[email protected]」,「新的簽名簽名者」 $ headers);' - 在** $ message **之後添加** $ headers **。然後添加諸如'$ headers =「From:」之類的東西。 $ senderName。 「<」。 $ senderEmail。 「>」;'在腳本的頂部。 –

+0

您將'd91b8401,d91b8401 @ p3nlhg1159.shr.prod.phx3.secureserver.net'作爲'From:'返回的原因就是,您的標題中有** no **'From:' 。 –

+0

加上'message =「...'中的連接點,第2,第3和第4應顯示爲'message。=」...'。好吧,我要去「拉赫蘭德」。 –

回答

1

您需要使用.=追加到消息,你只是每次分配替換它。

 $message = "First Name: $first"; 
     $message .= "Last Name: $last"; 
     $message .= "GLVAR ID: $glvar"; 
     $message .= "IP: $ip" . PHP_EOL; 
     $message .= "TIME: " . date('Y-m-d H:i:s'); 

你可以改變From:地址:

mail("[email protected]", "New Petition Signer", $message, "From: [email protected]"); 

第四個參數是可選的頭,它覆蓋默認頭。

0

的錯誤是在這一部分:

 $message = "First Name: $first"; 
     $message = "Last Name: $last"; 
     $message = "GLVAR ID: $glvar"; 
     $message = "IP: $ip" . PHP_EOL; 
     $message .= "TIME: " . date('Y-m-d H:i:s'); 

你不加入任何信息$消息。相反,你每次都會覆蓋它,除了最後一次。對於其他添加,也可以使用.=運算符。

+1

是不是你的第二,第三和第四需要點?如'$ message。='中那樣? –

+0

啊....我現在看到,你是在暗示它在OP的寫作之下。直到現在沒有注意到。我真的需要睡一覺。 *「那些蜘蛛在我的牆上跑下來了嗎?」* –

1

我有一個簡單的郵件代碼段,您可以更改/用途根據您的需要:::

$to = "[email protected]"; 
$subject = "Test Mail"; 

$message = "Hi Sujeet, A user of your site is Contacted you. "; 

$headers = "From: [email protected]"; 

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

<script type="text/javascript"> 
<!-- 
alert("Thank you for contacting us. We will be in touch with you very soon."); 
//--> 
</script> 

<? 
} 
?>