コード例 #1
0
 public function envioProgramadoAction()
 {
     //executar este script a cada 20 minutos ....
     $mCron = new Application_Model_Agendador();
     $mSend = new Application_Model_SendMail();
     $dados = new Application_Model_Contatos();
     $date = date('Y-m-d H:i:s');
     $data = $mCron->getEnvioToDate($date);
     if (count($data)) {
         $this->sessao_agenda->layout = $data->agn_template;
         $this->sessao_agenda->titulo = $data->agn_assunto;
         $mCron->setStatus('enviado', $data->agn_id);
         $layout = isset($this->sessao_agenda->layout) ? $this->sessao_agenda->layout : $data->agn_template;
         $titulo = isset($this->sessao_agenda->titulo) ? $this->sessao_agenda->titulo : $data->agn_assunto;
         $total_por_vez = 1000;
         $collection = $dados->getListContatosNotSend('inativo', $total_por_vez);
         //ENVIA 1000 POR VEZ
         if (!empty($collection)) {
             foreach ($collection as $contato) {
                 $nome_usuario = $contato['nome'];
                 $usuario_email = $contato['email'];
                 $usuario_id = $contato['id_contato'];
                 $nome_usuario = $nome_usuario != "" ? $nome_usuario : 'Usuário';
                 $dinamic_content = $contato['dinamic_content'];
                 $arguments = array('template' => $layout, 'email_recebe' => $usuario_email, 'nome_recebe' => $nome_usuario, 'dinamic_content' => $dinamic_content);
                 $mSend->setBody($arguments, $titulo);
                 $enviou = $mSend->sendEmail();
                 $dados->setStatusEnviou($usuario_id);
                 //sleep(5);
             }
             $this->view->enviando = 'Esta página é executada através do agendador cron, executando a coleção de envio: <br><pre> ' . print_r((array) $collection, true) . '</pre>';
         } else {
             $dados->setStatusEnviouTudo();
             unset($this->sessao_agenda->layout);
             unset($this->sessao_agenda->titulo);
             $this->view->enviando = 'Esta página é executada através do agendador cron - fim de envio de emails.';
         }
     } else {
         $this->view->enviando = 'Esta página é executada através do agendador cron - Não há envios agendados para ' . date('d/m/Y H:i:s');
     }
 }
コード例 #2
0
 function sendMailAction()
 {
     $postMsg = $this->_getParam('titulo') ? $this->_getParam('titulo') : 'MENSAGEM PARA VOCÊ';
     if ($this->_getParam('lay')) {
         $this->sessao->layout = $this->_getParam('lay');
     }
     if ($this->_getParam('titulo')) {
         $this->sessao->titulo = $this->_getParam('titulo');
     }
     $frase = isset($this->sessao->frase) ? $this->sessao->frase : 'Iniciando envio de mensagem';
     $layout = isset($this->sessao->layout) ? $this->sessao->layout : $this->_getParam('lay');
     $titulo = isset($this->sessao->titulo) ? $this->sessao->titulo : $this->_getParam('titulo');
     $send = $this->_getParam('enviar');
     $dados = new Application_Model_Contatos();
     $relatorio = new Application_Model_Relatorio();
     if ($send != '' && $layout != "" && $titulo != "") {
         //agenda o envio para garantir o processo até o final
         set_time_limit(0);
         ignore_user_abort(true);
         $total_por_vez = 100;
         $collection = $dados->getListContatosNotSend('inativo', $total_por_vez);
         //ENVIA 8 POR VEZ
         $mSend = new Application_Model_SendMail();
         $processado = $dados->getTotalContatosEnviados();
         $total = $dados->getTotalContatosAtivos();
         if ($frase == 'Iniciando envio de mensagem') {
             $processado = $processado - $total_por_vez;
             $collectionAgenda = array('data' => date("Y-m-d H:i:s", strtotime(date('Y-m-d H:i:s') . " +2 minutes")), 'template' => $layout, 'assunto' => $titulo);
             $mCron = new Application_Model_Agendador();
             $add = $mCron->addEnvio($collectionAgenda);
         }
         if (!empty($collection)) {
             $emails = '<h1>' . $frase . '</h1>';
             foreach ($collection as $contato) {
                 $this->view->porcentagem = floor($processado / $total * 100);
                 $nome_usuario = $contato['nome'];
                 $usuario_email = $contato['email'];
                 $usuario_id = $contato['id_contato'];
                 $nome_usuario = $nome_usuario != "" ? $nome_usuario : 'Usuário';
                 $dinamic_content = $contato['dinamic_content'];
                 $arguments = array('template' => $layout, 'email_recebe' => $usuario_email, 'nome_recebe' => $nome_usuario, 'dinamic_content' => $dinamic_content);
                 $mSend->setBody($arguments, $titulo);
                 $enviou = $mSend->sendEmail();
                 $dados->setStatusEnviou($usuario_id);
                 $RESP = $enviou ? 'ENVIADO' : 'NÃO ENVIADO';
                 $icone = $enviou ? '<img src="' . $this->view->site . '/img/ok.png" border="0">' : '<img src="' . $this->view->site . '/img/error.png" border="0">';
                 //   $relatorio->setStatus($usuario_id, $RESP);
                 $emails .= "<div class=\"send\">{$icone}&nbsp;{$RESP} ::::: Email: {$usuario_email}  </div>";
             }
             $this->view->msg = $emails . '<meta http-equiv="refresh" content="5;url=' . $this->view->site . '/index/send-mail/enviar/go" />';
             $this->sessao->frase = 'Enviando mensagens. Se você não quiser acompanhar o processo, basta fechar essa janela.';
         } else {
             $dados->setStatusEnviouTudo();
             unset($this->sessao->layout);
             unset($this->sessao->titulo);
             unset($this->sessao->frase);
             $this->view->porcentagem = 100;
             $this->view->msg = '<div class=\\"fim\\"><h1>Todas as Mensagens foram enviadas com sucesso!</h1> <br> <p><a href="' . $this->view->site . '/index">Clique aqui</a> pare retornar.</p></div>';
         }
     } else {
         $this->view->msg = '<input type="button" class="btn btn-info" onclick="location.href=\'' . $this->view->site . '/index\';" value="Voltar"><br><br>';
         $selec = '';
         if ($layout != '') {
             $send = $this->_getParam('enviar');
             if ($layout == 'null') {
                 $this->view->msg = '';
                 $this->view->sendScript = '';
             } else {
                 $this->view->sendScript = ' onclick="sendMail()"';
                 $this->view->msg = '';
                 $action = '';
                 $this->view->layout = "templates/" . $layout;
                 $this->view->msg .= '<form name="layout" action="' . $this->view->site . '/index/send-mail" method="post">' . "\n" . '<input type="hidden" name="lay" value="' . $layout . '">' . "\n" . '<input type="hidden" name="enviar" value="">' . "\n" . '<br><input type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModalQuest" value="Enviar mensagem agora">' . '&nbsp;<input type="button" class="btn btn-info" data-toggle="modal" data-target="#myModalAgend" value="Agendar envio">' . '&nbsp;<input type="button" class="btn btn-warning" ' . 'onclick="location.href=\'' . $this->view->site . '/index/editar-template/tmp/' . preg_replace('/.phtml/', '', $layout) . '\';"' . ' value="Editar esta template">&nbsp;<input type="button" class="btn btn-default"' . ' data-toggle="modal" data-target="#myModal" value="Enviar um Email teste">' . '&nbsp;<input type="button" class="btn btn-info"' . ' onclick="location.href=\'' . $this->view->site . '/index\';" value="Voltar"><br><br>' . "\n";
             }
         }
         $dados->setStatusEnviouTudo();
         $html = "\n\n<script type=\"text/javascript\">\n" . "function sendForm(obj){\n" . "if (obj.options[obj.selectedIndex].value != ''){ \n" . "document.layout.submit();\n" . "  }\n" . "}\n" . "function sendMail(){\n " . "    document.layout.enviar.value = 'go';\n" . "    document.layout.submit();\n" . "}\n" . "</script>\n";
         $html .= '<form name="layout" action="' . $this->view->site . '/index/send-mail" method="post">' . "\n";
         $html .= '<div class="form-group">' . "\n";
         $html .= '<label for="inputTitle">Título da Mensagem:</label>' . "\n";
         $html .= '<input hidden name="tit" id="tit_temp">' . "\n";
         $html .= '<input type="text"  class="form-control" size="50" id="title_msg" name="titulo" value="' . $postMsg . '">' . "\n";
         $html .= '</div>' . "\n";
         $html .= '<div class="form-group">' . "\n";
         $html .= '<label for="inputLayout">Layout:</label>' . "\n";
         $html .= '<select name="lay" class="form-control" onChange="sendForm(this);">' . "\n";
         $html .= '<option value="null">Selecione o layout</option>' . "\n";
         $files = glob(APPLICATION_PATH . "/views/scripts/templates/*.phtml");
         foreach ($files as $template) {
             $template = str_replace(APPLICATION_PATH . "/views/scripts/templates/", "", $template);
             $html .= "<option value=\"{$template}\"";
             $html .= $layout == $template ? 'selected="selected"' : '';
             $tempname = preg_replace('/.phtml/', '', $template);
             $html .= ">{$tempname}</option>\n";
         }
         $html .= "</select>";
         $html .= '</div>' . "\n" . "</form>";
         $this->view->msg .= $html;
     }
 }