Hola estimados colegas, estoy teniendo un problema que me tiene un poco preocupado, el hecho es que tengo un Newsletter que envía promociones a todos los usuarios de mi base de datos una vez al día.
Este Newsletter verifica por usuario, las preferencias de envío y compone el email de acuerdo a lo seleccionado por el User.
Lo hemos probado con 4 o 5 emails sin problema pero cuando los hacemos con toda la base de datos(4000), me envía los emails duplicados en cuestión de 1 por segundo a la misma persona, pude llegar a constatar que recibí 120 emails a la vez.
Intentamos en vez de enviar el email, generamos un archivo guardando un log como si fuese enviado y este guarda todos los usuarios sin duplicados, por eso descartamos el script.
El codigo es algo similar a esto:
Código PHP:
foreach( $users as $u ):
$html_ofertas = array();
#
if( !empty($u->email)):
$userCats = explode(",", $u->preferer_cat_ids);
foreach( $this->currentDeals as $cupon ):
if( in_array( $cupon->catg_id, $userCats ) ):
$html_ofertas[] = $this->htmlOferta($cupon);
endif;
endforeach;
if( count( $html_ofertas ) ):
$message = $this->htmlHeader( ) . implode('',$html_ofertas) . $this->htmlFotter($u);
$this->sendEmailToUser($u, $message);
endif;
endif;
endforeach;
private function sendEmailToUser( $user, $message ){
$from = "Mi Empresa <[email protected]>";
$headers = "From: $from\r\n";
$headers .= "Content-type: text/html\r\n";
$email_subject = "Tus ofertas para hoy";
mail($user->email, $email_subject, $message, $headers);
}
Se agradece cualquier ayuda!