2014-12-02 111 views
0

我創建了一個php腳本(用於聯繫表)發送郵件到我的Gmail帳戶。
如果我在標頭中使用發件人電子郵件($ headers =「From:」。$ email;),Gmail會將收到的郵件報告爲垃圾郵件。
如果我在標頭中沒有使用電子郵件(例如發件人名稱$ headers =「From:」。$ name;),則不會將該郵件報告爲垃圾郵件。
你有什麼建議讓我在標題中使用電子郵件嗎?
謝謝!聯繫表格發送垃圾郵件到Gmail的php腳本

<?php 

/* Check if the url field is empty (antispam) */ 
if ($_POST['leaveblank'] != '' or $_POST['dontchange'] != 'http://') { 
    $name = $_POST['name']; 
    $faillink = "xxx.php"; 
    header("Location: $faillink"); 
} else { 

    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $subject_prefix = "[ContactForm]: "; 
    $subject = $subject_prefix . $_POST['subject']; 
    $message = $_POST['message']; 
    $to = "[email protected]"; 

    $body = "From: " . $name . "\n"; 
    $body .= "Email: " . $email . "\n"; 
    $body .= "Message: " . $message . "\n"; 

    $headers = "From: " . $email; 

    $oklink = "yyy.php"; 
    $faillink = "xxx.php"; 

    if (preg_match("/[\r\n]/", $name) || preg_match("/[\r\n]/", $email)) { 
     header("Location: $faillink"); 
    } 

    $retmail = mail($to, $subject, $body, $headers); 
    if ($retmail) { 
     header("Location: $oklink"); 
    } else { 
     header("Location: $faillink"); 
    } 
} 

?> 
+0

這是常見的程序。使用該聯繫表格的人可以選擇他喜歡的任何發件人電子郵件。由於GMail無法驗證它實際上是該地址的所有者,因此它被標記爲垃圾郵件。 – kasoban 2014-12-02 15:11:41

+0

您應該只使用這樣的聯繫表單來發送郵件給自己,不要在乎它是否是垃圾郵件,在這種情況下,您可以在收件箱中設置一個過濾器來接受這些過濾器以繞過垃圾郵件過濾器。 – kasoban 2014-12-02 15:13:25

+1

將** From **地址設置爲'noreply @ yourdomain.com',然後將** Reply To設置爲'$ email'。 – Iain 2014-12-02 15:23:05

回答

2

我解決了問題,因爲Iain建議,所以我更換了郵件標題如下:

$headers = "From: " . "[email protected]" . "\r\n"; 
$headres .= "Reply-To: " . $email . "\r\n"; 
+0

除了在標題中設置發件人地址之外,您還可以像上面所做的那樣設置信封發件人地址。有關更多信息,請參閱http://php.net/manual/en/function.mail.php。 – mti2935 2014-12-04 10:50:20