2011-10-19 77 views
0

我在gMail和Hotmail中使用以下代碼時發生了一些瘋狂的垃圾郵件問題。有沒有我從PHP角度做錯的事情?Gmail和Hotmail的PHP垃圾郵件問題

function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) { 
$file = $path.$filename; 
$file_size = filesize($file); 
$handle = fopen($file, "r"); 
$content = fread($handle, $file_size); 
fclose($handle); 
$content = chunk_split(base64_encode($content)); 
$uid = md5(uniqid(time())); 
$name = basename($file); 
$header = "From: ".$from_name." <".$from_mail.">\r\n"; 
$header .= "Reply-To: ".$replyto."\r\n"; 
$header .= "MIME-Version: 1.0\r\n"; 
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; 
$header .= "This is a multi-part message in MIME format.\r\n"; 
$header .= "--".$uid."\r\n"; 
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n"; 
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; 
$header .= $message."\r\n\r\n"; 
$header .= "--".$uid."\r\n"; 
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here 
$header .= "Content-Transfer-Encoding: base64\r\n"; 
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; 
$header .= $content."\r\n\r\n"; 
$header .= "--".$uid."--"; 
if (mail($mailto, $subject, "", $header)) { 
    echo "mail send ... OK"; // or use booleans here 
} else { 
    echo "mail send ... ERROR!"; 
} 
} 
$my_file = "f92ffc796f.jpg"; 
$my_path = $_SERVER['DOCUMENT_ROOT']."/resources/template/uploads/"; 
$my_name = "BB Avatar"; 
$my_mail = "[email protected]"; 
$my_replyto = "[email protected]"; 
$my_subject = "This is a mail with attachment."; 
$my_message = "Hallo,\r\ndo Your download is attached.\r\n\r\"; 
mail_attachment($my_file, $my_path, $_REQUEST['email'], $my_mail, $my_name, $my_replyto, $my_subject, $my_message); 
+2

通過「垃圾郵件問題」,你是什麼意思?主要的郵件提供商將郵件標記爲垃圾郵件 – icktoofay

回答

-1

有一件事我可以看到,將會給你帶來的問題是:

​​

應該是:

$my_mail = "[email protected]"; 
$my_replyto = "[email protected]"; 

如果從這個腳本發送大量電子郵件,可能會因不與CAN SPAM Act符合被標記爲垃圾郵件。它可能與你的php無關。

我還沒有使用過它們,但我跟Send Grid的一些人交談過,他們聲稱他們的服務可以幫助確保電子郵件得到正確傳遞。由於共享的原因如下

1)如果你正在使用共享主機託管

+0

謝謝,但這只是一個錯字,我用假的取代了實際的電子郵件地址。 –

+0

也許我是盲人,但這兩組變量看起來和我完全一樣。 –

0

垃圾郵件問題,PHP是不是這個issue.try聯繫您的服務器providers.Some時候你的託管IP解決方案視爲spam.Try更改託管服務提供商,它可能正常工作。

2)在你的電子郵件主體的更多鏈接

3)局部報頭(始終使用回覆到參答案:TrentonMcManus)

4)堆積電子郵件發送

5)垃圾郵件舉報(點擊您鏈接的人數爲垃圾郵件)

6)郵件不要太短或太長。

7)把從列入黑名單的IP(主機和SMTP服務器))

這可能是新的IP地址已被谷歌或Hotmail 先前列入黑名單,您可以從網站從here檢查列入黑名單的IP或不

8)驗證發送方IP

發送方策略框架(SPF)是設計成通過檢測電子郵件欺騙,一個共同的脆弱性,通過驗證發件人的IP地址,以防止垃圾郵件的電子郵件確認系統。

也許PHP沒有解決這個問題。您可以在PHP代碼下面的事情

1)始終使用從/回覆解決

2)添加在身體

3)退訂鏈接避免垃圾郵件的關鍵字做。

4)消息不要太短或太長。

5)文本版本比HTML更好

+0

謝謝,服務器是MT(dv)服務器,我也測試過通過SMTP發送(通過phpMailer),但仍然沒有運氣。不管怎麼說,多謝拉。 –

+0

您使用哪種方法(「mail」,「sendmail」或「smtp」)在PHPMailer類中發送電子郵件? –

+0

我也有同樣的問題,請嘗試直接發送到您的網絡郵箱帳戶。該郵件也可能會去spam.try和我回來。 –