I'm having problems sending emails with a mailing list, this is what i have now and no email are sended
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> </p>
<p> </p>
<p>Equipa xxxxx.</p>
<p> </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...');
}
}
}
When i use var_dump($correio) in the loop i have all the emails, so i don't get why the email is not sended. Any help?
There's a simple mistake in your loop:
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...');
}
}
Either of those return
staements will exit the function entirely, so it will never get beyond the first message, and you need to keep track of each sending result, not just one of them. I think you meant something like this:
$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;