phpMailer邮件列表不发送

时间:2016-09-30 11:18:06

标签: php phpmailer

我在发送带有邮件列表的电子邮件时遇到问题,这就是我现在所拥有的,并且没有发送电子邮件

 public function mailingList($email, $nome, $message){
    $destinatário = $this->getAllEmails();
    $mail = new PHPMailer;
    $mail->isSendmail();
    $mail->setFrom('XXXX@xxxxx.xxx.xxx', '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)时,我收到了所有电子邮件,所以我不明白为什么电子邮件没有被发送。 有什么帮助吗?

2 个答案:

答案 0 :(得分: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标题中的任何一个都将完全退出该函数,因此它永远不会超出第一条消息,您需要跟踪每个发送结果,而不仅仅是其中一个。我认为你的意思是这样的:

$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;

答案 1 :(得分:-1)

请使用此示例并测试

<ul ng-repeat="item in items">
    <li>
        <label>
            <input type="radio" ng-value="item.text"/>{{item.text}}
        </label>    
    </li>
</ul>