SHARE
TWEET

Untitled

a guest Sep 11th, 2019 216 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. namespace App\Controller\Perform;
  3.  
  4.  
  5. use App\Entity\Mailer;
  6. use PHPMailer\PHPMailer\PHPMailer;
  7. use App\Dao\TemplateEmailDao;
  8.  
  9. require_once __ROOT__ . 'public/assets/mail/PHPMailer.php';
  10. require_once __ROOT__ . 'public/assets/mail/Exception.php';
  11. require_once __ROOT__ . 'public/assets/mail/SMTP.php';
  12.  
  13. class EmailController extends Mailer
  14. {
  15.     private $email;
  16.  
  17.     public function __construct()
  18.     {
  19.         $this->email = new PHPMailer();
  20.     }
  21.  
  22.     private function setInfoConexao()
  23.     {
  24.         //Define a linguagem como pt-br
  25.         $this->email->setLanguage('br', __ROOT__ . 'public/assets/mail/language/');
  26.  
  27.         //Dados do servidor e tipo de conexão
  28.         $this->email->isSMTP(); //Tipo de mensagem: SMTP
  29.         $this->email->Host = '';
  30.         $this->email->SMTPAuth = true; //Autenticação
  31.         $this->email->Username = ''; //Usuário do servidor SMTP
  32.         $this->email->Password = ''; //Senha da caixa postal utilizada
  33.         $this->email->SMTPSecure = 'tls';
  34.         $this->email->Port = 587;
  35.     }
  36.  
  37.     private function setInfoRemetente()
  38.     {
  39.         $this->email->setFrom('', '');
  40.     }
  41.  
  42.     private function setInfoDestinatario(array $request)
  43.     {
  44.         $this->email->addAddress($request['destinatario_email'], $request['destinatario_nome']);
  45.     }
  46.  
  47.     private function setInfoCodificacao()
  48.     {
  49.         $this->email->isHTML(true); //Define que o e-mail será enviado como HTML
  50.         $this->email->CharSet = 'utf-8'; //Charset da mensagem (opcional)
  51.     }
  52.  
  53.     private function setInfosMensagem($tipo_template)
  54.     {
  55.         $template = new TemplateEmailDao();
  56.         switch ($tipo_template) {
  57.             case 'tenho_interesse':
  58.                 $template = $template->findById(1);
  59.                 $assunto = $template['titulo'];
  60.                 $mensagem = $template['corpo'];
  61.                 $this->email->Subject = $assunto;
  62.                 $this->email->Body = $mensagem;
  63.                 $this->email->AltBody = strip_tags($mensagem);
  64.                 break;
  65.  
  66.             default:
  67.                 $this->email->Subject = $this->getAssunto();
  68.                 $this->email->Body = $this->getMensagemHTML();
  69.                 $this->email->AltBody = strip_tags($this->getMensagemHTML());
  70.                 break;
  71.         }
  72.     }
  73.  
  74.     public function enviarEmail(array $request)
  75.     {
  76.         $this->setInfoConexao();
  77.         $this->setInfoRemetente();
  78.         $this->setInfoDestinatario($request);
  79.         $this->setInfoCodificacao();
  80.         $this->setInfosMensagem($request['tipo_template']);
  81.  
  82.         //Envia a mensagem
  83.         $enviado = $this->email->send();
  84.  
  85.         //Limpa os destinatários e os anexos
  86.         $this->email->clearAllRecipients();
  87.         $this->email->clearAttachments();
  88.  
  89.         /*$this->testStatus($enviado);*/
  90.  
  91.         return $enviado;
  92.     }
  93.  
  94.     /*private function testStatus($status) { //Testar status, tire esse comentario e do método enviarEmail
  95.         //Exibe uma mensagem de resultado
  96.         if ($status) {
  97.             echo "E-mail enviado com sucesso!";
  98.         } else {
  99.             echo "Não foi possível enviar o e-mail.\n";
  100.             echo "Informações do erro: " . $this->email->ErrorInfo;
  101.         }
  102.     }*/
  103. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top