Ok, vamos lá Umarizal , você fez meus neurônios trabalharem em uma solução, eu também tava com a mesma dúvida. Então, aqui vai uma solução que encontrei e que funcionou legal aqui pra mim.
A ideia consiste em separar os tipos de email por serviços (ex: hotmail, gmail, etc). e depois fazer um agendamento cron para executar sua função mail(). Vamos aos detalhes:
passo 1:
crie as seguintes condições em seu código (exatamente onde faz a recuperação dos email dos seus clientes);
Código: Selecionar todos
<?php
//$email -> email do seu cliente
//$hora -> Hora que o cron irá executar
//$servico[1] -> Tipo de email (ex: hotmail.com, gmail.com, etc)
//$email_final -> email final para o qual deverá ser enviado
if ($email != ""){
$servico= explode("@", $email);
$hora= date('H');
if ($servico[1]== "hotmail.com" && $hora==4 ){
$email_final= $email;
}elseif ($servico[1] == "gmail.com" && $hora == 5){
$email_final= $email;
}elseif ($servico[1]== "yahoo.com.br" && $hora == 6){
$email_final= $email;
}elseif ($servico[1]!= "yahoo.com.br" && $servico[1]!= "hotmail.com" && $servico[1]!= "gmail.com" && $hora== 7){
$email_final= $email;
}
mail ($email_final, "Titulo da mensagem", "mensagem");
}
?>
Passo 2:
Agora vá até seu cpanel e crie 4 agendamentos cron: um para as 4h, outro para as 5h, para as 6h, e por fim um para as 7h;
(Você ajustar a hora que quiser, se precisar criar horários diferentes não esqueça de também alterar dentro do código acima a valor de comparação da var $hora).
Assim , as 4h serão enviados somente os email´s do tipo ''hotmail.com';
as 5h : "gmail.com";
as 6h : "yahoo.com.br";
e as 7h todos os diferentes dos anteriores.
Pronto! A intenção desse código e diminuir o volume de envios. Assim cada tipo de email será enviado em uma hora especifica. Mas você já deve ter notado que se seu volume de email for grande , isso de nada irá valer. Mas para 1000 email´s vai ser muito útil.
Espero ter ajudado você Umarizal, como disse, pra mim essa solução foi de grande valia. Abraço!