2016-09-30 3 views
1

У меня возникли проблемы с отправкой писем со списком рассылки, это то, что я есть сейчас, и ни электронная почта не отосланоPHPMailer список рассылки не отправлять

public function mailingList($email, $nome, $message){ 
    $destinatário = $this->getAllEmails(); 
    $mail = new PHPMailer; 
    $mail->isSendmail(); 
    $mail->setFrom('[email protected]', 'Webmaster'); 
    $mail->IsHTML(true); 
    $mail->Subject = 'Informação - XXXX'; 
    $mail->CharSet = 'UTF-8'; 
    $mail->Body = " 
     <html> 
     <head> 
      <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> 
     </head> 
     <body> 
      <h1>Mensagem da Administração</h1> 
      <table> 
      <tbody> 
      <tr> 
      <td><strong>Mensagem:</strong></td> 
      </tr> 
      <tr> 
      <td>$message</td> 
      </tr> 
      </tbody> 
      </table> 
      <p>&nbsp;</p> 
      <p>&nbsp;</p> 
      <p>Equipa xxxxx.</p> 
      <p>&nbsp;</p> 
      <p>Obrigado</p> 
      </body> 
      </html>"; 
    $mail->addAttachment('../img/logo_pek.gif'); 
    foreach ($destinatário as $dest) { 
     $correio = $dest['email']; 
     if($correio != ''){ 
      $mail->ClearAddresses(); 
      $mail->addAddress($correio, 'Informação - XXXX'); 
     } 
     if (!$mail->send()) { 
      echo "Mailer Error: " . $mail->ErrorInfo; 
      return array('status' => 'error', 'message' => 'O email não foi enviado...'); 
     } 
     else{ 
      echo "Ok"; 
      return array('status' => 'success', 'message' => 'O email foi enviado com sucesso...'); 
     } 
    } 
} 

Когда я использую var_dump ($ Correio) в у меня есть все электронные письма, поэтому я не понимаю, почему письмо не отправлено. Любая помощь?

+1

Выполняет ли отправка одного электронного письма? Что такое сообщение об ошибке? –

+0

Я рекомендую посмотреть пример списка рассылки, предоставленный PHPMailer. – Synchro

ответ

1

Там простая ошибка в цикле:

foreach ($destinatário as $dest) { 
    $correio = $dest['email']; 
    if($correio != ''){ 
     $mail->ClearAddresses(); 
     $mail->addAddress($correio, 'Informação - XXXX'); 
    } 
    if (!$mail->send()) { 
     echo "Mailer Error: " . $mail->ErrorInfo; 
     return array('status' => 'error', 'message' => 'O email não foi enviado...'); 
    } 
    else{ 
     echo "Ok"; 
     return array('status' => 'success', 'message' => 'O email foi enviado com sucesso...'); 
    } 
} 

Любой из этих return staements выход из функции полностью, поэтому она никогда не выйти за пределы первое сообщение, и вам нужно отслеживать каждый результат отправки, а не только один из них. Я думаю, вы имели в виду примерно следующее:

$results = []; 
foreach ($destinatário as $dest) { 
    $correio = $dest['email']; 
    if($correio != ''){ 
     $mail->ClearAddresses(); 
     $mail->addAddress($correio, 'Informação - XXXX'); 
    } 
    if (!$mail->send()) { 
     echo "Mailer Error: " . $mail->ErrorInfo; 
     $results[$correio] = array('status' => 'error', 'message' => 'O email não foi enviado...'); 
    } 
    else{ 
     echo "Ok"; 
     $results[$correio] = array('status' => 'success', 'message' => 'O email foi enviado com sucesso...'); 
    } 
} 
return $results; 
+0

Спасибо, я могу отправить сейчас, но у меня нет ответа – gmc1972

+0

Я не уверен, что вы имеете в виду. Проверьте журналы вашего почтового сервера? – Synchro

+0

Я имею в виду, теперь у меня есть массив внутри другого, у меня есть {"[email protected]": {"status": "success", "message": "O email foi enviado com sucesso ..."}} , и я должен иметь это {«статус»: «успех», «сообщение»: «O email foi enviado com sucesso ...»}, иначе мой ответ не определен, так как у меня есть эта функция $ ret = $ ebspma-> mailingList ($ email, $ nome, $ message); echo json_encode ($ ret); – gmc1972

-1

Пожалуйста, используйте этот пример и тест

<?php 

require_once 'class.phpmailer.php'; 
$mail = new PHPMailer(); 
// Now you only need to add the necessary stuff 

// HTML body 

$body = "</pre> 
<div>"; 
$body .= " Hello 
"; 
$body .= "<i>Your</i> personal photograph to this message. 
"; 
$body .= "Sincerely, 
"; 
$body .= "phpmailer test message "; 
$body .= "</div>" ; 

// And the absolute required configurations for sending HTML with attachement 

$mail->AddAddress("[email protected]", "My-webpage Website"); 
$mail->Subject = "test for phpmailer-3"; 
$mail->MsgHTML($body); 
$mail->AddAttachment("phpmailer.gif"); 
if(!$mail->Send()) { 
echo "There was an error sending the message"; 
exit; 
} 
echo "Message was sent successfully"; 
+0

Это основано на устаревшем примере и отсутствует жизненно важные части. – Synchro

+0

@ Synchro это работает для меня и этого примера, чтобы попробовать. Вы протестировали? – madankundu

+1

То, что я сказал, все еще держится - я знаю, потому что я написал исходный код, на котором вы его основали. Он также не может ответить на вопрос. – Synchro