2011-09-23 64 views
0

我使用PHPMailer的SMTP和存在的問題與錯誤發送郵件「的郵件錯誤:下面的發件人地址失敗:[email protected]問題使用的PHPMailer用於SMTP

我的代碼如下:

 $mail = new PHPMailer(); 

     $mail->IsSMTP();         // send via SMTP 

     $mail->Host = "localhost;"; // SMTP servers 

     $mail->SMTPAuth = true;  // turn on SMTP authentication 

     $mail->Username = ""; // SMTP username 

     $mail->Password = ""; // SMTP password 



     $mail->From = $email_address; 

     $mail->FromName = $email_address; 

     $mail->AddAddress($arrStudent[0]["email"]); 

     $mail->WordWrap = 50;        // set word wrap 

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



     $mail->Subject = "Subject"; 

     $theData = str_replace("\n", "<BR>", $stuff); 

     $mail->Body = $theData; // "This is the <b>HTML body</b>"; 

     $mail->AltBody = $stuff; 




     if (!$mail->Send()) { 

      $sent = 0; 

      echo "Mailer Error: " . $mail->ErrorInfo; 

      exit; 

     } 

我研究一切,當我內部class.smtp.php調試我發現錯誤函數「get_lines()」將返回錯誤值「550驗證失敗」

該代碼是以前工作很好,我想知道這個問題是如何突然出現的。 絕望的一些幫助。

感謝, Biplab

+1

'550 Authentication failed'看起來很清楚。也許你使用的SMTP帳戶得到了用戶名和密碼畢竟 –

+1

@Pekka:等等,你是說這些錯誤信息實際上*是什麼意思?我感到震驚,震驚! ;) – Piskvor

+0

我也是這麼認爲的......但之前使用相同的代碼工作正常,空間提供商因爲他們的問題而不提供這些信息。 –

回答

1
public function sendEmail ($subject, $to, $body, $from = FALSE) { 
    require_once('mailer.class.php'); 
    $mailer = new PHPMailer(); 
    //do we use SMTP? 
    if (USE_SMTP) { 
     $mailer->IsSMTP(); 
     $mailer->SMTPAuth = true; 
     $mailer->Host = SMTP_HOST; 
     $mailer->Port = SMTP_PORT; 
     $mailer->Password = ''; 
     $mailer->Username = ''; 
     if(USE_SSL) 
      $mailer->SMTPSecure = "ssl"; 
    } 

    $mailer->SetFrom($from?$from:ADMIN_EMAIL, ADMIN_NAME); 
    $mailer->AddReplyTo (ADMIN_EMAIL, ADMIN_NAME); 

    $mailer->AddAddress($to); 
    $mailer->Subject = $subject; 
    //$mailer->WordWrap = 100; 
    $mailer->IsHTML (TRUE); 
    $mailer->MsgHTML($body); 

    require_once('util.class.php'); 
    $mailer->AltBody = Util::html2text ($body); 

    //$mail->AddAttachment("images/phpmailer.gif");  // attachment 
    //$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment 

    if (! $mailer->Send()) { 
     return FALSE; 
    } 
    else { 
     $mailer->ClearAllRecipients(); 
     $mailer->ClearReplyTos(); 
     return TRUE; 
    } 
} 

我用這樣的... SetFrom應該代替從...這是你的錯誤的好友使用... :))

+1

沒有傢伙....我的PHPMailer類中沒有任何SetFrom函數...顯然有$ From變量在那裏.. –

0

試加入belowe線爲php.ini

extension=php_openssl.dll 

重啓再試一次

0

我使用Yii併購與PHPMailer,這對我的作品:

$mail = Yii::createComponent('application.extensions.mailer.EMailer'); 
$mail->Username   = $this->SMTP_USERNAME; // SMTP username 
$mail->Password   = $this->SMTP_PASSWORD; // SMTP password 
$mail->SMTPAuth   = true; 
$mail->From    = $this->fromAddress; 
$mail->Host    = $this->SMTP_SERVER_ADDRESS; 
$mail->FromName   = $this->fromName; 
$mail->CharSet   = 'UTF-8'; 
$mail->Subject   = Yii::t('mailer', $this->subject); 
$mail->Body    = $this->message; 
$mail->AddReplyTo($this->toAddress); 
$mail->AddAddress($this->toAddress); 
$mail->IsSMTP(true); 
$mail->IsHTML(true); 
$mail->Send(); 

希望有幫助嗎?