2014-01-27 49 views
0

我已經建立了一個聯繫表單,包含基本字段。該表格將發送給網站所有者併發送給提交表單的客戶的消息。該功能可以工作,但總是將消息發送到垃圾文件夾。是否有我的標題有問題,或者它只是hotmails垃圾設置。PHP的郵件功能直接進入垃圾文件夾

$headers = "MIME-Version: 1.0rn"; 
$headers .= "Content-type: text/html; charset=iso-8859-1rn"; 
$headers .= "From: [email protected]\r\n"; 
mail($to, $subject, $message, $headers)or die("mail error"); 

該消息是HTML電子郵件,只是一種更好的顯示消息的方式。同樣在我的電子郵件帳戶中,而不是顯示我的可擴展性,它說,'CGI梅勒' - 混淆。

更新 - 不再在所有工作

//mail customer 
$from = '[email protected]'; 
$subject = 'Your message has been recieved.'; 

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= 'From: My Site <'.$from.'>' . "\r\n"; 

$msg = ' 
<html> 
<head> 
<link href="http://linktocss/.../etc" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
formatted message... 
</body> 
</html> 
'; 
mail($email, $subject, $msg, $headers)or die("mail error"); 
+0

大多數採取可能是因爲你有這樣的聚集方式。閱讀手冊http://php.net/mail - 您的標題無效。 –

+0

這個問題沒有正確的答案。您需要對垃圾郵件規則和垃圾郵件規則有一個很好的理解,並且就我所關心的而言,這些規則還是有點運氣的。只要確保您的電子郵件格式正確,您的郵件發送域具有DKIM,PTR和反向DNS記錄。您的電子郵件中包含真正的非訂閱鏈接,您的服務器不在某個黑名單上。話雖如此,你的問題只是爲了回答。 – pregmatch

回答

0

如今電子郵件客戶端和服務器上執行的電子郵件發送服務器,如反向DNS查找,灰名單和whatevs大規模的檢查。所有這些測試都會失敗,使用php mail()函數。如果您使用的是動態IP,則更糟糕。

使用PHPMailer-Class並將其配置爲使用smtp-auth以及配置良好的專用SMTP服務器(本地或遠程服務器),並且問題消失。

2

編輯

這爲我工作,並在垃圾郵件/垃圾並沒有結束,但在我的收件箱。

<?php 
//mail customer 
$from = '[email protected]'; 
$to = "[email protected]"; 
$subject = 'Your message has been received.'; 

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From: The Sending Name <$from>\r\n"; 

$msg = ' 
<html> 
<head> 
<link href="http://linktocss/.../etc" rel="stylesheet" type="text/css" /> 

</head> 
<body> 
formatted message... 
</body> 
</html> 
'; 
mail($to, $subject, $msg, $headers)or die("mail error"); 

?> 

腳註:我注意到,您使用的是外部的樣式表。許多電子郵件服務(如Google)都不會呈現這些內容。最好使用inline styling來獲得更好/理想的結果。


原來的答覆

的(最有可能)的原因(按您發佈的代碼),爲什麼你的郵件中垃圾郵件最終是你的頭是無效的。

你有rn揉成了一起,而不是使用\r\n

用這個代替:

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From: [email protected]\r\n"; 
mail($to, $subject, $message, $headers)or die("mail error"); 

或者更好的是,使用:由於從PHP website's mail() function

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= "From: [email protected]\r\n"; 
mail($to, $subject, $message, $headers)or die("mail error"); 
+0

我用這種方法,而現在根本不發送。我上面更新了我的代碼。這是漫長的一天。我可能錯過了這些東西,但看不到它在哪裏。 –

+0

好吧,給我幾分鐘,我會看到我可以做什麼,因爲你添加/編輯的代碼。 @PaulLedger –

+0

但我確實有另一個問題。電子郵件發送到哪裏? @PaulLedger它不在你的代碼中。 '$ to'變量沒有被定義。 –