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 Bruno Brandão da Silva
      Boa noite, estou aprendendo laravel no php e estou seguindo um pdf. Porém deu um erro (Non-static method Illuminate\Routing\Route::middleware() should not be called statically) na hora que eu vou compilar (php artisan serve) no cmd e não aparece na URL o LARAVEL. O erro consta na minha api na linha 6, no caso Route::middleware('auth::api')->get('/user', function (Request $request) { return $request->user(); }); se alguém puder me ajudar
    • By Pedro_adm
      Olá pessoal ! Gostaria que alguém me ajudasse, estou precisando ler 2 linhas de um arquivo de texto por cada iteração do loop, quebrar as strings  e montar um array que será codificado em json e isso servirá como um arquivo de retorno com informação sobre clientes,  porém dessas 2 linhas cada uma possui um padrão de quebra de string diferente. A primeira linha estou chamando de segmento_T e a segunda de segmento_U por que o 14° caractere dessas linhas possuem as letras T e U ,  cada duas linhas trazem informações de um só cliente . Quero que cada segmento_t tenha o seu segmento_u. Todo o arquivo de texto está sendo alternado em segmento_t e segmento_u. Exemplo do txt:
      03300000 00000000000134373970130041625 000604895 AAAAA AAAAAAAAAA EIRELI ME AAAAA AAAAAAAAA (BRASIL) S/A 204012019 000039040 03358651T01 040 2010000053000134000604895 373970130041625 AAAAA AAAAAAAAAA EIRELI ME 0000003904012019 0335860000001T 09300000130041625 000000051504320000000000515040301201900000000000735003337397 001000002750640423PATESCO GONDIM SILVA GUIMARAES 01300416250000000000000000000000000 0335865300002U 0900000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000401201904012019000000000000000000000000000 000 A primeira linha do txt vai ficar dentro de um array chamado "Header", a segunda linha dentro de um array chamado "Lote" e o restante das linhas vão ser as informações sobre cliente.
       
      Esse é  o código que tenho até agora:
      <?php $file = file("COBST_BGM1_03_210119P_MOV.txt"); $total_linhas = count($file); $Dados = array(); for($x=0; $x<$total_linhas; $x++) { if ($x==0){ $lista = $file[$x]; $Cabecalho['Header'][] = array( 'codigo_banco' => substr($lista, 0, 3), 'lote:' => substr($lista, 3, 4), 'tipo_registro:' => substr($lista, 7, 1), 'reservado:' => substr($lista, 8, 8) ); } elseif ($x==1){ $lista = $file[$x]; $lote['Lote'][] = array( 'codigo_banco' => substr($lista, 0, 3), 'lote:'=> substr($lista, 3, 4), 'tipo_registro:'=> substr($lista, 7, 1), 'tipo_operacao:'=> substr($lista, 8, 1), 'tipo_servico:'=> substr($lista, 9, 2) ); } elseif ($x % 2){ $lista = $file[$x]; $segmento_u['Segmento_U'][] = array( 'codigo_banco' => substr($lista, 0, 3), 'lote:'=> substr($lista, 3, 4), 'tipo_registro:'=> substr($lista, 7, 1), 'n_sequencial:'=> substr($lista, 8, 5), 'codigo_segmento:'=> substr($lista, 13, 1), 'reservado_1:'=> substr($lista, 14, 1) ); } else { $Dados = $file[$x]; $segmento['Segmento_T'][] = array( 'codigo_banco' => substr($Dados, 0, 3), 'lote:'=> substr($Dados, 3, 4), 'tipo_registro:'=> substr($Dados, 7, 1), 'n_sequencial:'=> substr($Dados, 8, 5), 'codigo_segmento:'=> substr($Dados, 13, 1) ); } } $resultados = array($Cabecalho, $lote, $segmento_u, $segmento); header("Content-Type: application/json"); $json_str = json_encode($resultados, JSON_PRETTY_PRINT); echo $json_str; ?>  
    • By peterstefan
      Boa tarde, quero fazer anúncios em um projeto e quero mostrar dentro de um foreach, mais quero mostrar a cada 5 blocos e depois mostro o anuncio do google.. isso tem algum novo para que eu possa pesquisar?
    • By violin101
      Caros amigos.
       
      saudações...
       
      Por favor PRIMEIRAMENTE peço desculpa em recorrer ao auxílios dos amigos, mas sou novato em CODEIGNITER.
       
      Através de muita Leitura e pesquisa sobre o tema, tenho conseguido desenvolver o que gostaria de executar.
       
      Me deparei com o seguinte problema que não estou conseguindo executar com êxito.
       
      Preciso criar uma FUNÇÃO onde o Sistema após o USUÁRIO efetuar o LOGIN possa realizar uma VALIDAÇÃO de Data e Hora.
      Por exemplo:
       
      Na base de dados tenho campos distintos como:
        `dataInicio` DATE NOT NULL ,
        `horaInicio` TIME NOT NULL ,
        `dataFim` DATE NOT NULL ,
        `horaFim` TIME NOT NULL ,
       
      Pergunta:
      como faço uma função para que o sistema possa comparar e calcular o PRAZO de VENCIMENTO com a DATA e HORA atual, ou seja:
      prazo para encerrar
      dataFim: 19/04/2019
      horaFim: 12:00
      ---------------------------------------
      vencimento
      dataAtual: 19/04/2019
      horaAtual: 12:01
      ==========================
       
      Se a Data/Hora já venceu o Sistema muda o STATUS para 2 (prazo encerrado).
       
      Grato,
       
      Cesar
       
       
       
       
       
       
    • By emersonbrs
      string(77) "[ 1, { "mensagem": "Recarga", "pin": "", "nsu": 1096 } ]" tenho esse array como eu faço para pegar mensagem com json_decode, exemplo se eu fizer assim
      <?php $array = file_get_contents( 'http://www.json-generator.com/api/json/get/bTLlkwcgOa?indent=2' ) ; $obj = json_decode($array); echo $obj->1->mensagem; ?> dessa forma da erro
       
       
      syntax error, unexpected '1' (T_LNUMBER), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in
       
      como resolver ?
×

Important Information

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