2011-12-11 87 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