Проблема с использованием PHPMailer для SMTP

Я использовал PHPMailer для SMTP, и есть проблема при отправке почты с ошибкой «Ошибка Mailer: следующее с адреса не было: no-reply@mydomain.org.uk»

Мой код выглядит следующим образом:

$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 Authentication failed»

Ранее код работал нормально, мне интересно, как эта проблема возникла внезапно. Отчаянно нуждаюсь в помощи.

Спасибо, Biplab

 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 следует использовать вместо From … это ваш приятель ошибок … :))

попробуйте добавить нижнюю строку в php.ini

 extension=php_openssl.dll 

перезапустить и повторить попытку

Я использую Mailer 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(); 

Надеюсь, это поможет?