2012-01-21 51 views
0

我有一個腳本發送了很多郵件來發送通知,但是由於郵件沒有通過SMTP驗證,郵件直接進入垃圾郵件。我如何製作它以便進行身份驗證?在Linux上使用SMTP Auth發送郵件,Cent OS

我使用下面的腳本:

$to = $email . ', '; // note the comma 

// subject 
$subject = 'MineAlert - Server Down'; 

// message 
$message = ' 
<html> 
<head> 
    <title>Your server seems to be down, this could be because it has crashed or you have stopped it</title> 
</head> 
<body> 
    <p>Your server seems to be down, this could be because it has crashed or you have stopped it</p> 

    <p>IP: <b>'.$ip.'</b><br> 
    <p>Port: <b>'.$port.'</b><br> 
    <p>Reason: <b>Unknown</b><br> 
    <br> 
    This email has been generated and sent to you by 

</body> 
</html> 
'; 

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

// Additional headers 
$headers .= 'From: [email protected]' . "\r\n"; 

// Mail it 
$mail = mail($to, $subject, $message, $headers); 
if (!$mail){ 
    echo "Mail did not send"; 
} else { 
    echo "Mail Sent"; 
} 
+0

請注意['mail()'函數](http://www.hardened-php.net/suhosin/configuration.html#suhosin.mail.protect)。 – sarnold

回答

0

爲什麼電子郵件跑到垃圾郵件箱的原因可能是多方面的,如您聲稱這些電子郵件來自您實際上不具備的某些域名(例如gmail.com)。

你說得對,連接到一個「官方」的SMTP服務器(比如說gmail)並且用這個服務器發送郵件會解決問題。但是,在我看來,這個問題不應該在PHP腳本中解決/配置,而應該在您的MTA(郵件傳輸代理)程序中解決。在Debian中使用Exim4作爲MTA的示例配置可以在here找到。其他操作系統中的配置應該類似。沒有必要修改你的PHP腳本。

[更新]我做了更多的搜索,發現問題也可以在PHP腳本中解決。 This article可能是有用的。