Skip to content
4 de setembro de 2017 / rafaelti

Envio de email com template no ZF2

Objetivo

Envio de email com template através do ZF2

Plataforma

Linux, ZF2

Conhecimento

ZF2, SMTP

Introdução

Em plataformas web é necessário envio email para seus usuários e clientes. A comunicação com seus usuários e clientes com identidade visual é importante.
Portanto o envio de email com template é essencial.

Solução

Eu criei uma classe como serviço no ZF2. Criei o método abaixo.

 public function sendTemplatedGenericEmail() {        
        $view = new \Zend\View\Renderer\PhpRenderer();
        $resolver = new \Zend\View\Resolver\TemplateMapResolver();
        $resolver->setMap([
            'mailTemplate' => __DIR__ . "/../../../../Application/view/layout/{$this->getTemplate()}.phtml"
        ]);
        $view->setResolver($resolver);

        $viewModel = new ViewModel();
        $viewModel->setTemplate('mailTemplate')->setVariables([
            'username' => $this->getUsername(),
            'userid' => $this->getUserid(),
            'subject' => $this->getSubject(),
        ]);

        $bodyPart = new \Zend\Mime\Message();
        $bodyMessage = new \Zend\Mime\Part($view->render($viewModel));
        $bodyMessage->type = 'text/html';
        $bodyPart->setParts(array($bodyMessage));

        $message = new \Zend\Mail\Message();
        $message->setBody($bodyPart);
        $message->setFrom('***psipsi.com.br', 'PsiPsi Info');
        $message->addTo($this->getToemail());
        $message->addBcc('****gmail.com');
        $message->setSubject($this->getSubject());

        $smtpOptions = new \Zend\Mail\Transport\SmtpOptions();
        $smtpOptions->setHost('******.com')
                ->setConnectionClass('login')
                ->setName('*******')
                ->setPort('999')
                ->setConnectionConfig([
                    'username' => '****psipsi.com.br',
                    'password' => '*******',
                    'ssl' => 'tls',
        ]);

        $transport = new \Zend\Mail\Transport\Smtp($smtpOptions);
        $transport->send($message);
    }

Esse trecho seta o template a ser usado. O getter $this->getTemplate() pega o nome do meu template.

$view = new \Zend\View\Renderer\PhpRenderer();
        $resolver = new \Zend\View\Resolver\TemplateMapResolver();
        $resolver->setMap([
            'mailTemplate' => __DIR__ . "/../../../../Application/view/layout/{$this->getTemplate()}.phtml"
        ]);
$view->setResolver($resolver);

Neste trecho é setado as variáveis, tais como o nome e o assunto do email.

 $viewModel = new ViewModel();
 $viewModel->setTemplate('mailTemplate')->setVariables([
		'username' => $this->getUsername(),
		'userid' => $this->getUserid(),
		'subject' => $this->getSubject(),
	]);

Passamos o nosso template para o corpo do email

 $bodyPart = new \Zend\Mime\Message();
 $bodyMessage = new \Zend\Mime\Part($view->render($viewModel));
 $bodyMessage->type = 'text/html';
 $bodyPart->setParts(array($bodyMessage));

É finalizado o email com as informações faltantes para o email. Os getter: $this->getToemail(), $this->getSubject() fazem o trabalho de preencher.

		$message = new \Zend\Mail\Message();
        $message->setBody($bodyPart);
        $message->setFrom('***psipsi.com.br', 'PsiPsi Info');
        $message->addTo($this->getToemail());
        $message->addBcc('****gmail.com');
        $message->setSubject($this->getSubject());

Configuração do SMTP e envio.

		$smtpOptions = new \Zend\Mail\Transport\SmtpOptions();
        $smtpOptions->setHost('******.com')
                ->setConnectionClass('login')
                ->setName('******.com')
                ->setPort('999')
                ->setConnectionConfig([
                    'username' => '****psipsi.com.br',
                    'password' => '*******',
                    'ssl' => 'tls',
        ]);
		$transport = new \Zend\Mail\Transport\Smtp($smtpOptions);
        $transport->send($message);
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogueiros gostam disto: