Ir para conteúdo
Entre para seguir isso  
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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por Paulo Oliveira Albuquerque
      Ola pessoal
      Eu criei o meu codigo para listar os modulos de uma tabela do banco de dados
       
         ele funciona certo
       
        Só que neste código eu quero que ele me faz uma contagem do nome da tabela que onde esta os nome preciso para a listagem
       Ex:
      /// TABELA DO MODULO ///
      id      nome                            url                status      tabela    cor_bloco
      1      Nome da cidade       city.php           S            city            blue
      2      Nome da cidade2     city2.php         S           city2          blue
       
      Obs: Esta TABELA e as das cidades que quero que faz a contagem de quantos registro tem nela
       
      No php fiz assim
      <?php /* Connect To Database*/ require_once ("../conexion.php"); mysqli_set_charset($con,"utf8"); $action = (isset($_REQUEST['action'])&& $_REQUEST['action'] !=NULL)?$_REQUEST['action']:''; if($action == 'ajax'){ $query = mysqli_real_escape_string($con,(strip_tags($_REQUEST['query'], ENT_QUOTES))); $tables="modulos"; $campos="*"; $sWhere=" modulos.tabela LIKE '%".$query."%' OR modulos.nome LIKE '%".$query."%' OR modulos.id LIKE '%".$query."%'"; $sWhere.=" order by modulos.id DESC"; $tables1="modulos"; $campos1="*"; $sWhere1=" modulos.tabela"; //$sWhere1.=" order by modulos.id"; include 'pagination.php'; //include pagination file //pagination variables $page = (isset($_REQUEST['page']) && !empty($_REQUEST['page']))?$_REQUEST['page']:1; $per_page = intval($_REQUEST['per_page']); //how much records you want to show $adjacents = 10; //gap between pages after number of adjacents $offset = ($page - 1) * $per_page; //Count the total number of row in your table*/ $count_query = mysqli_query($con,"SELECT count(*) AS numrows FROM $tables where $sWhere "); if ($row= mysqli_fetch_array($count_query)){$numrows = $row['numrows'];} else {echo mysqli_error($con);} $total_pages = ceil($numrows/$per_page); //main query to fetch the data $query = mysqli_query($con,"SELECT $campos FROM $tables where $sWhere LIMIT $offset,$per_page"); //loop through fetched data if ($numrows>0){ ?> <?php //Contatar o total numeros das tabelas*/ $query = mysqli_query($con,"SELECT count(*) AS numrows FROM $sWhere1 "); if ($row= mysqli_fetch_array($query)){$numrows = $row['numrows'];} else {echo mysqli_error($con);} $contagem = ceil($numrows); //main query to fetch the data $query = mysqli_query($con,"SELECT $campos1 FROM $sWhere1"); //loop through fetched data if ($numrows>0){ ?>      
      <section class="content"> <!-- Small boxes (Stat box) --> <div class="row"> <?php $finales=0; while($modulos = mysqli_fetch_array($query)){ $id = $modulos['id']; $nome = $modulos['nome']; $url = $modulos['url']; $tabela = $modulos['tabela']; $cor_blocos = $modulos['cor_blocos']; $icone = $modulos['icone']; $status = '1'; $finales++; ?> <div class="col-lg-3 col-xs-6"> <!-- small box --> <div class="small-box bg-<?php echo ConfigPainel('cor_blocos'); ?>"> <div class="inner"> <h3><?php echo $contagem; ?></h3> <!-- AQUI É CONTADOR --> <p><?php echo $modulos['nome']; ?></p> </div> <div class="icon"> <i class="fa <?php echo $modulos['icone']; ?>"></i> </div> <a href="<?php echo $modulos['url']; ?>" class="small-box-footer">Gerenciar de Modulo <i class="fa <?php echo $modulos['icone']; ?>"></i></a> </div> </div> <!-- ./col --> <?php } } ?> <div class="col-md-12"> <div class="form-control"> <?php $inicios=$offset+1; $finales+=$inicios -1; echo "Mostrando $inicios al $finales de $numrows registros"; echo paginate( $page, $total_pages, $adjacents); ?> </div> </div> </div> <?php } } ?> </section>  
    • Por Nodio
      Olá todos, vejam a duvida
       
      O código original é:
      <ol-class="carousel-indicators"> <li data-target="#mainslider" data-slide-to="0" class="active"></li> <li data-target="#mainslider" data-slide-to="1"></li> <li data-target="#mainslider" data-slide-to="2"></li> <li data-target="#mainslider" data-slide-to="3"></li> </ol> ai ei quero pegar o numero de registro de um mysql e emular o data-slide-to
       
      <?php echo '<ol class="carousel-indicators">'; echo '<li data-target="#mainslider" data-slide-to="0" class="active"></li>'; $conta = mysqli_query($conn, "SELECT * FROM inicio"); if(mysqli_num_rows($conta) == false){ echo '<div align="center"><br /><strong>Nenhum cliente encontrado.</strong><br /></div>'; }else{ $i=0; while($ln = mysqli_fetch_object($conta)){ if ($i === 0) echo '</ol>'; ?> <li data-target="#mainslider" data-slide-to="<?php echo '$i'; ?>"></li> <?php $i++; if ($i === 5) { echo '</ol>'; } else { if ($i > 0){ echo '</ol>'; } } } } ?>  
      mas quando passa pro html, ele não reconhece a variavel e a source fica assim:
       
      <!-- Indicators --> <ol class="carousel-indicators"><li data-target="#mainslider" data-slide-to="0" class="active"></li></ol> <li data-target="#mainslider" data-slide-to="$i"></li> </ol> <li data-target="#mainslider" data-slide-to="$i"></li> </ol> Alguem pode me dar uma luz?
    • Por matheusmacias
      Bom, estou fazendo um sistema de login com ajax no arquivo acesslg.php tem:
       
      if (strcmp(basename($_SERVER["SCRIPT_NAME"]), basename(__FILE__)) === 0){ header("location: ../error/index.php"); } ^^ bloqueando o acesso direto só que, parece que esse comando ta bloqueando o script de validar o login
      <script type="text/javascript"> $(function(){ $('#logine').submit(function(){ $.ajax({ url: 'include_bella/acesslg.php', type: 'POST', data: $('#logine').serialize(), success: function(data){ $('.validatelg').html(data); } }); return false; }); }); </script>  
    • Por Caio_Lourençon
      Olá estou desenvolvendo um projeto utilizando a extensão MySQLi, e nisso aproveitando para utilizar algumas funções orientada a objeto! Gostaria de tirar umas dúvidas em relação a listagem de dados, são duas perguntas:   1) Utilizar a função foreach() ao invés de um while() com a função fetch_array() dentro, tem uma listagem mais rápida ou mais lenta? Pois com ambas consigo trazer os dados, No momento estou utilizando a foreach por ser mais rápida de se digitar.
      2) Utilizo muitas listagens de tabelas diferentes na mesma página sempre chamando um novo SELECT, seria melhor criar uma função com um SELECT dentro para eu sempre reutiliza-lá ou não iria mudar muita coisa em questão de desempenho?
       
      Agradeço qualquer informação.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.