2013-04-16 146 views
0

我一直在搜索SO一段時間,我似乎無法找到我的問題的答案。我有一個PHP郵件腳本成功地發送電子郵件到正確的郵件地址,沒有問題。我使用Gmail作爲我的郵件客戶端,並且運行良好,但是當我在我的主機站點(位於active24的Mamutmail)上檢查到網絡郵件時,我注意到很多電子郵件不會被重定向到Gmail。PHP表單發送空白郵件

當我一年前開始使用我的郵件腳本時,我也收到了很多空白郵件,儘管我在表單上有一個工作驗證。我每天得到5-8封空白的郵件,但是我決定在Gmail中過濾掉很多郵件後認爲它是一個「隨機主機問題」(我知道,這很愚蠢)。

因此,要總結:

- >從網站上的形式發送被髮送到主機的webmail郵件,但有些不會導入到我的Gmail

- >我得到很多空白郵件每天甚至認爲我有一個驗證

這是我的表單代碼:

<form id="mailForm" method="post" action="sendMailPre.php"> 
      Ditt namn <span style="color: red;">*</span><br/> 
      <input type="text" name="name" class="required" /><br/><br/> 

      Din mailadress <span style="color: red;">*</span><br/> 
      <input type="text" name="mail" class="required email" /><br/><br/> 

      Ditt telefonnummer<br/> 
      <input type="text" name="tele" /><br/><br/> 

      Din stad<br/> 
      <input type="text" name="city" /><br/><br/> 

      Ditt meddelande <span style="color: red;">*</span><br/> 
      <textarea type="text" name="message" rows="8" class="required"></textarea><br/><br/> 

      <input type="submit" class="submit" value="Skicka meddelande" /><br/><br/> 
      </form> 

而且這是在PHP郵件腳本:

$ToEmail = '[email protected]'; 
$EmailSubject = $_POST["name"] . ' - Mail från hemsidan'; 
$mailheader = 'From: ' . $_POST["name"] . '' . "\n" . 
'Reply-To: ' . $_POST["mail"] . '' . "\n" . 
"X-Mailer: PHP/" . phpversion()."\n"; 


$mailheader .= "MIME-Version: 1.0\n"; 
$mailheader .= "Content-Type: text/html; UTF-8\n"; 

$message = '<html><head>'; 
$message .= '<style>'; 
$message .= 'body{line-height: 60%; padding: 35px; margin: 0;}'; 
$message .= '</style></head>'; 
$message .= '<body>'; 
$message .= '<span style="font-family: Trebuchet MS; font-size: 16px; font-weight: bold; color: #4c7eb0; font-weight: normal;">NAMN</span><br/>'; 
$message .= str_replace("\n", "<br />", ($_POST["name"])); 
$message .= '<br/><br/>'; 
$message .= '<span style="font-family: Trebuchet MS; font-size: 16px; font-weight: bold; color: #4c7eb0; font-weight: normal;">MAIL</span><br/>'; 
$message .= str_replace("\n", "<br />", ($_POST["mail"])); 
$message .= '<br/><br/>'; 
$message .= '<span style="font-family: Trebuchet MS; font-size: 16px; font-weight: bold; color: #4c7eb0; font-weight: normal;">TELEFONNUMMER</span><br/>'; 
$message .= str_replace("\n", "<br />", ($_POST["tele"])); 
$message .= '<br/><br/>';  $message .= '<span style="font-family: Trebuchet MS; font-size: 16px; font-weight: bold; color: #4c7eb0; font-weight: normal;">STAD</span><br/>'; $message .= str_replace("\n", "<br />", ($_POST["city"])); $message .= '<br/><br/>'; 
$message .= '<span style="font-family: Trebuchet MS; font-size: 16px; font-weight: bold; color: #4c7eb0; font-weight: normal;">MEDDELANDE</span><br/>'; 
$message .= str_replace("\n", "<br />", ($_POST["message"])); 
$message .= '</span>'; 
$message .= '</body></html>'; 
mail($ToEmail, $EmailSubject, $message, $mailheader) or die ("Meddelandet kunde inte skickas."); 

非常感謝您的幫助!先謝謝你!

+0

工作驗證「哪裏」? JavaScript的?在PHP中?如果它是JavaScript,那很容易繞過。 –

+0

@MarcB它使用Javascript。是否容易繞過?你能推薦任何良好的驗證? – Cheezen

回答

2

我願意打賭,你的腳本的設置方式是任何時候任何人加載該頁面時,它會觸發一封電子郵件。我將包括一個隱藏的變量:

<input type="hidden" name="formEmail" value="1"/> 

然後在$ _ POST [「formEmail」]的sendMailPre.php頁面上檢查它,並且僅當該變量是有發送電子郵件。

我最好的猜測是你可能會讓搜索引擎的機器人擊中頁面。

+1

或者只是將整個生成/發送邏輯封裝在if($ _ SERVER ['REQUEST_METHOD'] =='POST'){...}'中。檢查特定的表單域可能是不可靠的。 –

+0

@MarcB到目前爲止,您的解決方案非常好,在我看到它是否真正起作用之前要等上一兩個小時。但是,要感謝你們的快速反應! – Cheezen