2011-12-11 107 views
1

我正在使用PHP郵件程序類。我越來越: SMTP錯誤:下面的收件人失敗:[email protected]Php郵件錯誤:SMTP錯誤

$mail = new phpMailer(); 
$body    = "Hello, this is a test mail."; 
//$body    = preg_replace('/\\\\/','', $body); //Strip backslashes 

$mail->IsSMTP();       // tell the class to use SMTP 
//$mail->SMTPAuth = true;     // enable SMTP authentication 
//$mail->Port  = 25;     // set the SMTP server port 
$mail->Host  = "localhost";   // SMTP server 
$mail->Username = "localhost";  // SMTP server username 
$mail->Password = "password";   // SMTP server password 
//$mail->SMTPSecure = "tls"; 
//$mail->IsSendmail(); // tell the class to use Sendmail 

$mail->AddReplyTo("[email protected]","First Last"); 

$mail->From  = "[email protected]"; 
$mail->FromName = "First Last"; 

$to = "[email protected]"; 

$mail->AddAddress($to); 

$mail->Subject = "First PHPMailer Message"; 

$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test 
$mail->WordWrap = 80; // set word wrap 

$mail->MsgHTML($body); 

$mail->IsHTML(true); // send as HTML 

if($mail->Send()){ 
    echo 'Message has been sent.'; 
    } 

什麼能是什麼原因?

+1

你明白這個從函數的返回值,或者是通過電子郵件發送給您的目標域的郵政局長? – slugonamission

+0

@slugonamission考慮到有被印在上面的代碼中沒有錯誤消息,我猜它是從目標域中的反彈電子郵件...... –

+0

沒有no..this錯誤,我通過PHPMailer的類獲得。所以它不是來自目標域。 – Shades88

回答

3

我不得不使用經過驗證的SMTP這個問題。當我使用xampp在家中測試郵件但連接到(共享)服務器時,郵件毫無問題地發送給用戶。當我用主機服務器上的PHP嘗試同樣的事情時,電子郵件會傳遞到我的帳戶上的地址,但不會傳遞到外部地址。 (也就是說,如果我的地址是[email protected],並且我發送了一封電子郵件到[email protected],它會通過,但是如果我將它發送到[email protected],則失敗)解決方案原來是使用在我的本地PC上工作時的完整主機地址,即$ mail-> Host =「mail.fred.bloggs.com」,但服務器上的$ mail-> Host =「localhost」。可能看起來不合時宜,但它有效。

+0

非常幫助我,謝謝。 – msoa

1

我只是碰到了這個問題,在我的情況,我相信這是這是不允許不匹配的域名的發件人地址的虛擬主機提供商的郵件服務器。因此,例如,我使用mail.mydomain.com發送郵件,但是我想將發件人地址設爲[email protected] 當我將發件人地址切換到[email protected]時,郵件就發送了。

+0

我將郵件服務器更改爲「本地主機」,解決了該問題。 – msoa

5

只是儘量把SMTPAUTH虛假和主機to'localhost」。

謝謝! :)

+0

通過以上兩項更改,我的服務器可以發送電子郵件。謝謝@ user182925 – Esha