Envio de emails - PHP - Portugal-a-Programar
By escar, February 4, 2011 in PHP
escar 0
Tenho de desenvolver um script para enviar emails personalizados para N users, retirados de uma bd. Vou ter de calibrar o envio, por causa de restrições de alguns servidores (max msg por hora ou por dia), para não ficar em blacklists. Para isto, será indicado usar o sleep() entre cada envio de email?
Outra questão.. enquanto o script está a ser executado, queria mostrar na página o progresso global (ex. "3/100 emails enviados"), talvez também com uma barra de progresso. Como posso fazer isto? O que acontece normalmente é ele imprimir de uma só vez o buffer, só depois de estar tudo enviado. Já experimentei com o ob_start()/ob_flush()/flush(), mas não estou a conseguir. Como posso fazer isto?
cronjobs pode ser uma solução, mas eu tenho o envio de news, que envia x emails de y em y segundos e vai imprimindo no ecra os endereços para onde foi enviado a news...
O codigo é um pouco grande para colocar aqui, se quiserem o codigo mandem-me uma PM.
Com um pouco de tempo, tentarei colocar aqui o codigo, genérico, pois está adaptado às minhas necessidades, pois aqui na empresa, em servidores partilhados so posso enviar 10.000 envios mes.
Cronjobs é a única forma, a não ser que definas o PHP com tempo ilimitado de execução, que pode não ser possível e em último caso é má ideia. Dá para fazer o que queres de qualquer forma.
Concordo, embora, somente nesta funcionalidade comece a impor o tempo ilimitado e no final da execução do script redefino o tempo de execução...
E se o utilizador cancela o request a meio? Fica-se em águas de bacalhau?
Antes de mais, obrigado. Esqueci-me de dizer antes, não querem usar cronjobs, para já. Não sei porquê, apenas não querem...
Quanto ao utilizador cancelar o request, sem problemas para já. Estão informados e cientes do que pode acontecer.
O PHPlist tb ñ usa cronjobs, e funciona bem... claro que o user não pode fechar a página, mas se fechar, quando se abrir novamente, o processo é retomado onde ficou...
Não querem usar cronjobs e não dizem o porquê? Há com cada empresa por aí .. lol
@escar Podes cria uma página que faz requests AJAX de x em x segundos, e a página PHP guarda na BD o último registo efectuado. Acho que serve para o que queres.