0

Como fazer meu site, do resultado de um select, enviar emails em uma data pré-determinada, como o voxcards???

criado por Neander Araújo em 17/10/2002 1:34pm
Nenhuma descrição foi enviada.

Lista de Respostas:

0
17/10/2002 10:17pm
(~22 anos atrás)
no linux, crontab.
no windows, sei que tem uma agenda de tarefas, mas não sei o nome !

[]s

0
23/10/2002 7:54pm
(~22 anos atrás)
Wagner Quedi Rosa respondeu:
cria um script em php que faça o envio das cartas como se fosse uma pagina normal
ai vc cria um shell script mais ou menos nessa forma:
--------------inicio do script----------------
#!/bin/bash
php -q -f /var/www/default/nome_do_script_em_php.php
--------------fim do script-------------------

ai vc coloca no crontab para executar em uma determinada hora
ex: a 00:01 de cada dia ...
digita: crontab -e
e adiciona a seguinte linha
01 00 * * * /var/www/default/./shell_script
sai e salva e tá feito.....

0
24/10/2002 8:40am
(~22 anos atrás)
Wagner... aproveitando sua resposta..... eh possivel eu determinar periodos no crontab?????

0
24/10/2002 11:18pm
(~22 anos atrás)
Wagner Quedi Rosa respondeu:
Sim .. claro .. por exemplo ... vc pode fazer seu server rodar o script a cada 2 horas... assim.

0 */2 * * * script

de 5 em 5 minutos assim

*/5 * * * * detail_rep

Qualquer coisa é so perguntar...

0
30/10/2002 3:56pm
(~22 anos atrás)
Se sua página estiver no Windows NT, você pode usar o comando AT. Digite AT /? no Prompt de Comando para maiores detalhes.
Se você estiver no Windows 9.x use o agendador de tarefas.

Agora se seu site está num servidor gratuito, não sei como fazer.

0
01/11/2002 11:11pm
(~22 anos atrás)
Não seria possível criar uma função executável a partir de uma página que rode uma vez por dia para checar a enviar os emails marcados para aquele dia?

0
02/11/2002 5:27pm
(~22 anos atrás)
Sim, você pode colocar uma página que se autualiza sozinha de 24 em 24 horas. Mas aí você tem que deixar o browser aberto nesta página o tempo todo. Aí se o seu irmãozinho pequeno vai lá e sai da página, seu esquema tá todo furado.

0
18/11/2002 1:48pm
(~22 anos atrás)
Mauricio Soares respondeu:
Olá Pessoal tive este problema faz algum tempo:

Tenho um servidor Freebsd onde rodo os meus testes e hospedo em uma provedora que roda um Linux...

Fiz uma solução usando o um recurso do php muito legal, no meu servidor foi uma beleza, pois tenho acesso completo, instalação completa, agora no servidor Linux da provedora eu não tenho shell e o pessoal da provedora nao tem boa vontade para colocar uma linha no crontab.... ai tive que fazer uma solução "Gambi"...

A solução gambi não é 100% como irei explicar mais para frente...
Antes eu gostaria de contribuir a prime

-----------> A Primeira Solucão (correta e legal para quem tem acesso a crontab)

Uma coisa legal do php é que você pode escrever um arquivo no linux onde a primeira linha comece com #!/usr/bin/php e então depois do código normal de PHP. Esta maneira pode ser executada como um arquivo normal ou ate mesmo dentro de um código em Perl...

No meu caso eu fiz o seguinte:


#!/usr/bin/php
<?php
$data_atual = getdate();
$dia = $data_atual["mday"];
$mes = $data_atual["mon"];

$sql_niver = "SELECT user_name, email, datanasc FROM user WHERE MONTH(datanasc) = '$mes' and DAYOFMONTH(datanasc) = '$dia'";
mysql_select_db($db);
$result_niver = mysql_query($sql_niver);
$tot_niver = mysql_numrows($result_niver);
$headers = "From:webmaster@meusite.com.br\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";
$headers .= "Return-Path:webmaster@meusite.com.br\n"; // Return path for errors

While ($number < $tot_niver){
$nick_niver = mysql_result($result_niver,$number,"user_name");
$nick_user_email = mysql_result($result_niver,$number,"email");
$message = "<br><br>
Olá, $nick_niver<br><br>
Você recebeu um cartão virtual do site do meu site!<br><br>
<a href=\"http://www.meusite.com.br/index.php?link=cardview&yourid=258f3bd063e0472\">
<font size= +1 color=\"#0000ff\"><u>Click aqui para ver o cartão</u></font>
</a>
<br><Br>
Seu cartão ficará disponível por 15 dias, após este prazo ele será automaticamente removido.";
$message .= "</font><br><br>-----------------------------------------<br>
http://www.meusite.com.br";
$message .= "</P>";
$email_user = "$nick_user_email";
$subject = "Você acabou de receber um cartão virtual";
mail($email_user, $subject, $message, $headers);
$number++;
}
?>
-- fim do script

$ chmod 755 envia.php
Ai coloquei o envia.php no crontab...

Foi uma beleza....

---------->Segunda Solução Gambiarra para quem não pode usar crontab

Quando fui colocar na provedora deu o xabu, eu não tinha shell e a "politica" da provedora não permitia usar o contrab deles...

Ai tive a seguinte ideia. Fiz uma tabela de controle de envio, e quando um usuário faz a sua identificação, e a identificação é aprovada, eu verifico se já foi enviado o e-mail no dia, caso não tenha sido o sistema atualiza o controle de envio e envia para os aniversariantes do dia um cartão....

Contudo isso não é 100%, pois pode haver a identificação de 2 ou mais user ao mesmo tempo, apesar q eu rodo isso faz 3 meses e nunca aconteceu isso, se aconteceu o q vai rolar é o cara receber 3 cartoes (parabéns para ele...) e azar o meu! Para ter um controle disso ao terminar de enviar o e-mail para os aniversariantes o sistema tambem manda um e-mail para mim, informando qual usuário inconscientemente envio os cartoes e quais usuários receberam os cartoes... Ahh! fiz varios teste para ver a velocidade, num banco de dados de 3000 registro o usuário que esta enviando os cartoes nem percebe que ta rodando a rotina.

Segue abaixo a Gambi:

$timestamp = date("Y-m-d G:i:s");
$sql_enviou="SELECT enviou FROM niver_eviados";
mysql_select_db($db);
$result=mysql_query($sql_enviou);
$enviou = mysql_result($result,0,'enviou');
$data_banco = substr($enviou,0,10);
$data_atual = date("Y-m-d");

if ($data_banco < $data_atual){
$sql="UPDATE niver_eviados SET enviou='$timestamp', user ='$user_name'";
mysql_select_db($db);
$result=mysql_query($sql);

$data_atual = getdate();
$dia = $data_atual["mday"];
$mes = $data_atual["mon"];

$sql_niver = "SELECT user_name, email, datanasc FROM user WHERE MONTH(datanasc) = '$mes' and DAYOFMONTH(datanasc) = '$dia'";
mysql_select_db($db);
$result_niver = mysql_query($sql_niver);
$tot_niver = mysql_numrows($result_niver);
$message_mau = "Segue abaixo a lista: <br>";
$headers = "From:webmaster@meusite.com.br\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";
$headers .= "Return-Path:webmaster@meusite.com.br\n"; // Return path for errors

While ($number < $tot_niver){
$nick_niver = mysql_result($result_niver,$number,"user_name");
$nick_user_email = mysql_result($result_niver,$number,"email");
$message_mau .= "<br> $nick_niver - $nick_user_email";
$message = "<br><br>
Olá, $nick_niver<br><br>
Você recebeu um cartão virtual do site do meu site!<br><br>
<a href=\"http://www.meusite.com.br/index.php?link=cardview&yourid=258f3bd063e0472\">
<font size= +1 color=\"#0000ff\"><u>Click aqui para ver o cartão</u></font>
</a>
<br><Br>
Seu cartão ficará disponível por 15 dias, após este prazo ele será automaticamente removido.";
$message .= "</font><br><br>-----------------------------------------<br>
http://www.meusite.com.br";
$message .= "</P>";
$email_user = "$nick_user_email";
$subject = "Você acabou de receber um cartão virtual";
mail($email_user, $subject, $message, $headers);
$number++;
}
$message_mau .= "<br>Os cartões foram enviados por $user_name $timestamp";
$message_mau .= "</font><br><br>-----------------------------------------<br>
http://www.meusite.com.br";
$message_mau .= "</P>";
$headers_mau = "From:webmaster@meusite.com.br\n";
$headers_mau .= "Content-Type: text/html; charset=iso-8859-1\n";
$headers_mau .= "Return-Path:webmaster@meusite.com.br\n"; // Return path for errors
$email_user_mau = "meu_email@particular.com.br";
$subject_mau = "Aniversariantes do Dia";
mail($email_user_mau, $subject_mau, $message_mau, $headers_mau);
}

Valeu Galera. Se alguem tiver alguma ideia para melhorar a gambi que fiz eu agradeço.

Atenciosamente,
Maurício Soares


0
29/11/2002 4:14pm
(~22 anos atrás)
João K. respondeu:
Meu método GAMBIarra, ou GAMBITO do xadrez, é um pouquinho diferente desse.

Você constroe um script que vc poderá acessar via web protocolo HTTP mesmo como vc fosse visitar a página.

Nesse script vc faz o que quer fazer e mandar para o servidor.

O truque do meu GAMBI é utilizar um serviçode monitoramente de URL ou de homepage e manda apontar para o tal script no seu servidor. Então mande executar, ou melhor dizendo, visitar sua página 1,2,X vezes por dia.

Existem vários serviço de monitoramente de URL na internet.

http://www.netwhistle.com/
http://www.netmon.com/
http://www.dotcom-monitor.com/
http://www.freewebsiteproviders.com/website-monitoring.htm

Detalhe... Como esse script pode ser considerado delicado dependendo do serviço. Vc pode proteger o diretório onde ele estará instalado e colocar um login e senha. Para que o serviço consiga visitar o script nesse diretório protegido vc pode colocar:

http://user:password@dominio.com.br/dir_seguro/meuscript.php

Esse é o meu GAMBITO contra essas provedoras que não oferecem acesso ao crontab.


0
16/01/2003 6:46pm
(~22 anos atrás)
A gambi do Cawvin é a melhor ... mas não é possível que vc hospede seu site em um servidor e ele nao te de acesso ao crontab verifique com eles as vezes eles não dão acesso direto mas voce coloca o codigo ou programa e pede pra adionarem ao crontab e eles adicionam sempre...

power by UAI sÔ!

Valew!

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)