2016-04-28 3 views
0

Im создает небольшой скрипт электронной почты в момент с PHPMailer + SMTP Authentication. Я попытался в настоящее время отправки электронной почты с использованием неправильно Passwort - но она по-прежнему возвращает «истина» для успеха ... Кто-нибудь есть какие-либо идеи `PHPMailer не дает сообщение об ошибке?

Вот моя функция, что я использую для вызова Sendmail:

?
$erfolg_email = true; 
    foreach($empfaenger as $value) 
    { 

     $response = $this->sendMail($smtp, $value, $content, $files); 
     if($response != true) 
     { 

      return $response; 
      $erfolg_email = false; 

     } 

    } 

а вот мой PHPMailer Функция

function sendMail($smtp, $empfaenger, $content, $attachements) 
{ 

    $mail = new PHPMailer(true); 

    try{ 

     $mail->IsSMTP();  
     $mail->Host = $smtp['SMTP']; 
     $mail->SMTPAuth = true;  // turn on SMTP authentication 
     $mail->Port = $smtp['Port']; 
     $mail->SMTPSecure = 'tls'; 
     if($smtp['Domain'] != '') 
     { 

      $username = $smtp['Username']."@".$smtp['Domain']; 

     }else 
     { 

      $username = $smtp['Username']; 

     } 
     $mail->Username = $username; // SMTP username 
     $mail->Password = $smtp['Password']; // SMTP password 
     $mail->SMTPOptions = array(
      'ssl' => array(
       'verify_peer' => false, 
       'verify_peer_name' => false, 
       'allow_self_signed' => true 
      ) 
     ); 
     $mail->From = $smtp['Email_Address']; 
     $mail->AddAddress($empfaenger); 
     $mail->WordWrap = 50; 
     $mail->isHTML(true); 

     foreach($attachements as $value) 
     { 

      $mail->AddAttachment($value); 

     } 
     $mail->Subject = "Mahnung"; 
     $mail->Body = $content; 
     $mail->AltBody = "Sie haben offene Posten"; 

     if($mail->Send() == true) 
     { 

      echo $mail->ErrorInfo; 
      return $mail->ErrorInfo; 

     }else 
     { 

      return $mail->ErrorInfo; 

     } 

    } catch (phpmailerException $e) { 

     return $e->errorMessage(); //Pretty error messages from PHPMailer 

    } catch (Exception $e) { 

     return $e->getMessage(); //Boring error messages from anything else! 

    } 
} 

$ SMTP содержит массив со всеми SMTP информацию, адрес электронной почты, подписи, SMTP-сервер, Порт, Имя пользователя, Пароль и SSL Использование ...

Я уверен, что я использую неправильное имя пользователя и пароль, поскольку никакая электронная почта не проходит, но я все еще получаю «истину» в результате функции отправки почты ... ее даже не повторяет ошибку. Я даже попытался дать сообщение об ошибке, когда отправка прошла успешно ... Но ничего

Любая помощь приветствуется!

Приветствия

ответ

0

Ваша функция sendMail не возвращает логическое значение. Так как это массив/объект, в этом случае результат всегда равен true. Попробуйте распечатать $response перед вашим оператором if, и вы увидите ошибку.

+0

Ошибка является строка ... Могу ли я проверить возвращаемое значение с «is_bool()»? –

+0

ОК - Я понял. Кажется, важно проверить возвращаемые значения всех функций с помощью «is_bool». Это помогло мне, получив правильные решения, что делать с возвращаемым значением. –

+0

Не так много, что вам нужно использовать 'is_bool', вам нужно обращать внимание на ваши типы возврата в целом. '$ mail-> ErrorInfo' никогда не будет логическим, поэтому проверка его значения, поскольку никто не достигнет ничего, будет ли вызов успешным или нет. – Synchro

0

В РНР самой функции почтовой программы файл, вы можете добавить эту кодировку в последнее:

$send = $mail->Send(); //Send the mails 
    if($send){ 
     echo '<center><h3>Mail sent successfully</h3></center>'; 
    } 
    else{ 
     echo '<center><h3>Mail error: </h3></center>'.$mail->ErrorInfo; 
    } 
} 
Смежные вопросы