Jump to content
Sign in to follow this  
ghlevin

Envio automático de e-mail de aniversariantes

Recommended Posts

Tenho uma função no meu site que manda uma relação de cadastrados que fazem aniversário no mês seguinte todo dia 25.

 

A função no arquivo Model:

public function emailAniversariantes(){
		$data = getdate();
		$mes = $data[mon];
		$ano = $data[year];
		if($mes==12){
			$mes = 1;
			$ano = $ano+1;
		}else{
			$mes = $mes+1;
			if($mes<10){
				$mes = '0'.$mes;
			}
		}

		$sqlUnidades = "select id, nome from unidade where ind_unidade_ativa=1 order by nome";
		$resUnidades = System::element('db')->query($sqlUnidades);
		
		$corpo = "";
		$corpo .= "<div style='float:left;width:100%; height:3px; background-color:gray; margin-bottom:20px;'></div>";

		$corpo .="<div style='font-family:Lucida Sans; font-size:13px;' color='black'>
					<br>Bom dia.<br>Segue abaixo a relação dos aniversariantes do próximo mês.<br>
					Se possível, sugerimos que entrem em contato com eles para desejar feliz aniversário!<br><br><br>
					</div>";
			
		foreach ($resUnidades as $rUnidades){
			$sql = "Select u.id as id_usuario, i.id as id_investidor, uu.id_unidade, un.nome nome_unidade, u.email, 
					DATE_FORMAT(i.data_nasc, '%d/%m/%Y') as data_nasc, i.razao_social as nome, i.telefone, i.nome_responsavel,
					(Select count(*) from usuario u join usuario_unidade uu on (uu.id_usuario = u.id) join investidor i on (i.id_usuario = u.id)
					where uu.id_unidade = ".$rUnidades['id']." and month(i.data_nasc)=".$mes.") AS count
					from usuario u join usuario_unidade uu on (uu.id_usuario = u.id) 
					join unidade un on (un.id = uu.id_unidade)
					join investidor i on (i.id_usuario = u.id)
					where uu.id_unidade = ".$rUnidades['id']." and month(i.data_nasc)=".$mes."
					ORDER BY i.razao_social";
			$res = System::element('db')->query($sql);
			
			if($res[0]['count']>=1){
				$corpo .="<div style='width:100%; height:100%; float: left; margin: 25px 0;'>";
				
				$corpo .="<b>Unidade: ".$rUnidades['nome']."</b>";
				
				$corpo .="<table style='width: 100%; border-collapse: collapse; display: table;	background-color: #FFFFFF; border: 3px solid #E2E1E0; padding: 5px;'>
							<thead>
								<tr stile='border-collapse: collapse; border: 3px solid #E2E1E0; padding: 5px;'>
									<th style='border-collapse: collapse; background-color: #F7F7F7; border: 3px solid #E2E1E0; padding: 5px; text-align: center;'>Nome</th>
									<th style='border-collapse: collapse; background-color: #F7F7F7; border: 3px solid #E2E1E0; padding: 5px; text-align: center;'>Telefone</th>
									<th style='border-collapse: collapse; background-color: #F7F7F7; border: 3px solid #E2E1E0; padding: 5px; text-align: center;'>E-mail</th>
									<th style='border-collapse: collapse; background-color: #F7F7F7; border: 3px solid #E2E1E0; padding: 5px; text-align: center;'>Responsável</th>
									<th style='border-collapse: collapse; background-color: #F7F7F7; border: 3px solid #E2E1E0; padding: 5px; text-align: center;'>Data de Nascimento</th>
								</tr>
							</thead>";
				$corpo .="<tbody>";
				
				foreach ($res as $r){
					
					$corpo .= "<tr stile='border-collapse: collapse; border: 3px solid #E2E1E0; padding: 5px;'>";
						$corpo .= "<td style='border-collapse: collapse; background-color: #FFFFFF; border: 3px solid #E2E1E0; padding: 5px; text-align: center;'>".$r['nome']."</td>";
						$corpo .= "<td style='border-collapse: collapse; background-color: #FFFFFF; border: 3px solid #E2E1E0; padding: 5px; text-align: center;'>".$r['telefone']."</td>";
						$corpo .= "<td style='border-collapse: collapse; background-color: #FFFFFF; border: 3px solid #E2E1E0; padding: 5px; text-align: center;'>".$r['email']."</td>";
						$corpo .= "<td style='border-collapse: collapse; background-color: #FFFFFF; border: 3px solid #E2E1E0; padding: 5px; text-align: center;'>".$r['nome_responsavel']."</td>";
						$corpo .= "<td style='border-collapse: collapse; background-color: #FFFFFF; border: 3px solid #E2E1E0; padding: 5px; text-align: center;'>".$r['data_nasc']."</td>";
					$corpo .= "</tr>";
				}
				$corpo .="</tbody>";
				$corpo .="</table></div>";
			}
		}
			
		$corpo .= "<div style='width:100%; height:56px; float:left;'>";
		$corpo .= "<table><font face='Lucida Sans'>";
		$corpo .= "<tr>";
		$corpo .= "<td style='float:left;'><div style='font-size:10px; float:left; width:200px; margin-top:5px; position:relative; margin-right:15px; float:left;'>Tel: +55 11 3577-7173<br>";
		$corpo .= "email@meusite.com.br<br>";
		$corpo .= "http://www.meusite.com.br/</td>";
		
		$corpo .= "<td><img style='float:left; position:relative'></td>";
		
		$corpo .= "</table></font></div></div>";
		$corpo .= "</div>";
			
		$arrayEmails = array();
		$arrayEmails[0]="email2@meusite.com.br";
		$arrayEmails[1]="email3@meusite.com.br";
		$arrayEmails[2]="email4@meusite.com.br";
		Util::enviaEmail("Remetente", $arrayEmails, "Aniversariantes ".$mes."/".$ano, $corpo,implode(";",$arrayEmails));
		return "1";
	} 

Como ela é chamada no arquivo Controller:

public function emailAniversariantes() {
	   	$retorno = CadAdmin::emailAniversariantes();
    	echo $retorno;
    } 

Porém, eu assumi um site de outro desenvolvedor. O próprio desenvolvidor utilizava de aplicativo próprio pra chamar essa função todo dia 25.

 

Como não pude ter acesso ao aplicativo dele e não está sendo enviado o e-mail de aniversariantes, gostaria de saber se eu poderia criar alguma task ou arquivo BAT que possa fazer o envio desse e-mail todo dia 25.

Share this post


Link to post
Share on other sites

Tipo.. vc pode fazer um agendamento de tarefas no seu servidor.. geralmente no seu plano de hospedagem tem a parada de fazer isso, dai vc cria a página e manda ele rodar aquela página sempre no dia 25

 

Um exemplo da Locaweb http://wiki.locaweb.com.br/pt-br/Agendamento_de_tarefas_Revenda_-_Painel_Plesk_11

Share this post


Link to post
Share on other sites

Tipo.. você pode fazer um agendamento de tarefas no seu servidor.. geralmente no seu plano de hospedagem tem a parada de fazer isso, dai você cria a página e manda ele rodar aquela página sempre no dia 25

 

Um exemplo da Locaweb http://wiki.locaweb.com.br/pt-br/Agendamento_de_tarefas_Revenda_-_Painel_Plesk_11

 

Tenho esse site dentro de um servidor Windows.

 

Imaginei fazer um arquivo BAT com alguns comandos de php como os desse site:

http://php.net/manual/pt_BR/install.windows.commandline.php

 

E depois colocar pra executar numa Task.

 

Será que existe algum comando desses do PHP pro Windows Prompt que chamasse a função emailAniversariantes?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By tarsio
      Boa noite pessoa so novo na programação e gostaria de saber, porque meu tempo limite de consulta está no limite, esse e um pedaço do código fora esse tenho mais 14 query então só 8 funcionam e gostaria de saber alguma maneira para que todas a consultas funcionem. Colocando botoes de alguma maneira resolver esse problema.    <div class="panel-group" id="accordion"> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="#collapse9"><h2>cliente<h2></a>
      </h3> </div> <div id="collapse9" class="panel-collapse collapse"> <div> <?php try{   $query7= $Conexao->query( " SELECT C.FTP_CLIENTE,dbo.MinutesToDuration2021(SUM(DATEDIFF(MINUTE,E.DT_ENVIADO,E.DT_RECEBIDO)),COUNT(E.ID_EXAME)) as TEMPO FROM WR_CLIENTE C INNER JOIN E ON  =  WHERE  = 2 AND (convert(datetime,'$datai',110)) AND (convert(datetime,'$dataf',110)) GROUP BY E ORDER BYE ASC;");   $exs7 = $query7->fetchAll();   }catch(Exception $e){ echo $e->getMessage(); exit; }   ?> <br> <br> <table id="table11" data-toggle="table" class="table table-hover" data-sort-name="FTP_CLIENTE" data-sort-name="TEMPO"> <thead> <tr> <th data-field="FTP_CLIENTE" data-sortable="true" scope="row">CLIENTE</th> <th data-field="TEMPO" data-sortable="true" scope="row">TEMPO</th> </tr> </thead> <tbody> <!---carregar os refistro --> <?php foreach($exs7 as $ex) { ?> <tr>   <td><?php echo $ex['FTP_CLIENTE'];?></td> <td><?php echo $ex['TEMPO'];?></td> </tr> <button class="mais">Carregar mais</button> <?php } ?> </tbody> </table> </div> </div> </div> </div>   </div>
    • By Adriana de Luca
      Estou tentando pegar o id do livro para depois fazer um update para controlar o estoque, consegui pegar o id, porem não consigo coloca-lo no mysql
      Se coloco um id valido, ele traz as informações, porem se chamo  {'$livro_id'} da erro.
       
      Alguém pode por favor me ajudar? agradeço muito.
       
      <?php

      $query = mysql_query("SELECT * FROM produtos 
      inner join estoque ON produtos.livro_id = estoque.livro_id");

      ?>
      <div class="central">
                     <form action="#" method="GET">
                         <fieldset>
                             <legend class="titulo">Consultar Livraria</legend>
                             <select type="text" name="produtos">
                                 <option value="">Selecionar..</option>
                              <?php
                                     $sql =  mysql_query("SELECT livro_id, nome as titulo FROM produtos");
                                      while ($result = mysql_fetch_array($sql) )
                                      {
                                         echo "<option value='".$result['livro_id']."'>".$result['titulo']."</option>";
                                     }
                                 ?>                            
                             </select>
                             <input class="botao" type="submit" name="ajustar" value="Ok" />
                         </fieldset>
                      </form>
                     
       <?php
      //aqui ele mostrara o código do livro    
      echo $_GET['produtos'];
      $livro_id='produtos';

      $sql1="SELECT * FROM produtos 
      inner join estoque ON produtos.livro_id = estoque.livro_id WHERE produtos.livro_id= {'$livro_id'}";
            
      $res=mysql_query($sql1); 
                    while($registro=mysql_fetch_row($res))                
      {    
                                            
        $nome=$registro[1];                             
        $autor=$registro[2]; 
        $editora=$registro[3]; 
        $colecao=$registro[4];                             
        $preco=$registro[5];                                   
        $data=$registro[6];   
        $quantidade=$registro[0];                      
                                           
        ?>
        <?php 
            echo "Título: $nome<br>";                                    
            echo "Autor: $autor<br>"; 
            echo "Editora: $editora<br>";  
            echo "Coleção: $colecao<br>";                             
            echo "Preço: $preco<br>";                                    
            echo "Quantidade: $quantidade<br>"; 
            echo "Data: ".date('d-m-Y', strtotime($data))."<br><p>";   

        mysql_close($connect);               
              
      ?>
    • By vinihhylian0103
      Boa noite, eu tenho um campo no meu cadastro para o usuário selecionar seu curso, que seria esse:
       
      <select name="curso" type="text" required=".$this->fields["cursos"]."> <option value="Informática">Informática</option> <option value="ADM">Administração</option> <option value="Edificações">Edificações</option> /> e eu gostaria de saber como gravar essa escolha no banco de dados, segue o código de inserrir
       
      <?php if(!$conect=mysqli_connect('localhost','root','','cadastros')) die ('erro ao conectar'); #Recolhendo os dados do formulário $nome=mysqli_real_escape_string($conect, $_POST['nome']); $sobrenome=mysqli_real_escape_string($conect, $_POST['sobrenome']); $data=mysqli_real_escape_string($conect, $_POST['data_nasc']); $rm=mysqli_real_escape_string($conect, $_POST['rm']); $curso=mysqli_real_escape_string($conect, $_POST['curso']); $email=mysqli_real_escape_string($conect, $_POST['email']); $senha=mysqli_real_escape_string($conect, $_POST['senha']); # Verificando apenas um campo, no caso dado1. $sql = $conect->query("SELECT * FROM usuarios WHERE email='$email'"); if(mysqli_num_rows($sql) > 0){ echo "Este email já foi cadastrado!"; exit(); } else { if(!$conect->query("INSERT INTO usuarios(nome, sobrenome, data_nasc, rm, curso, email, senha) VALUES('$nome','$sobrenome','$data','$rm','$curso','$email','$senha')")) die ('Os dados não foram inseridos'); echo "<script type='text/javascript'>alert('Cadastro Concluído!');</script>"; header('Location: index.html'); } Muito obrigado desde já!
    • By andrelimaverde
      Pessoal preciso de uma ajuda, desde já agradeço à todos.
      "Site teste, estudos..."
      Tenho um formulário com 3 etapas, ele está trabalhando em php normalmente e salvando os dados preenchidos em .txt (para testes apenas).
      Vamos lá, nas 3 etapas o form está com action="1.php" (2.php,  3.php) e method="post". [Não vou colocar muito código para simplificar, pois é um formulário básico fácil de entender]
      Exemplo:  Pagina 1 - envia para action '1.php'
      Nome: 
      Telefone:
      <input type="submit" value="Continuar">
      (
       O arquivo 1.php armazena os dados e redireciona => header( 'Location:Pagina2.php' ) ;   
       Assim como os outros php's
      )
      Pagina 2 - action 2.php armazena os dados e redireciona => header( 'Location:Pagina3.php' ) ; 
      Cidade:
      Endereço:
      <input type="submit" value="Continuar">
       
      A questão está na 3ª página
      Página 3 -
      Email:
      (Preciso que após preencher o campo da página 3 no caso "Email:",  ao clicar no botão, neste caso não sei se seria um submit ou button. O formulário não redirecionar para pagina 4, ao clicar ele enviar e salvar normalmente, mas aparecer um novo input na mesma pagina por Exemplo:"Twitter:"  ) 
      No caso preciso que ele não redirecione , gostaria de colocar um gif de carregando por 15 segundos por exemplo como se estivesse processando as informações... e em seguida ele apresentar o novo input do "Twitter:" , onde ai sim enviaria normalmente...
    • By Wilson Fernandes
      Olá! Preciso de ajuda para começar a construir gráficos de funções quadráticas em plano cartesiano. Já procurei várias fontes, mas nenhuma explica como construir um bom gráfico.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.