Zend Framework - Gerenciamento de Email

O Zend Framework fornece um componente separado chamado zend-mailpara enviar mensagens de e-mail. O componente zend-mail também oferece uma opção de ler e escrever mensagens de e-mail com anexos em formato de texto e html. Enviar um e-mail no Zend é muito mais fácil e simples de configurar.

Vamos examinar os conceitos de email, configurações básicas, configurações avançadas, como transporte SMTP, etc., neste capítulo.

Instalar o Componente Mail

O componente de correio pode ser instalado usando o seguinte comando Composer.

composer require zendframework/zend-mail

Configuração Básica de Email

Um e-mail básico consiste em um ou mais destinatários, um assunto, um corpo e um remetente. Zend forneceZend\Mail\Messageclasse para criar uma nova mensagem de e-mail. Para enviar um e-mail usando ozend-mail, você deve especificar pelo menos um destinatário, bem como o corpo da mensagem.

O código parcial para criar uma nova mensagem de correio é o seguinte -

use Zend\Mail;
$mail = new Mail\Message(); $mail->setSubject('Zend email sample'); 
$mail->setBody('This is content of the mail message'); $mail->setFrom('[email protected]', "sender-name"); 
$mail->addTo('[email protected]', "recipient-name");

Zend fornece a classe Zend \ Mail \ Sendmail para enviar a mensagem de correio. Sendmail usa a função de correio nativo php, mail para enviar a mensagem de e-mail e podemos configurar a camada de transporte usando o arquivo de configuração php.

A codificação parcial usando Sendmail é a seguinte -

$transport = new Mail\Transport\Sendmail(); 
$transport->send($mail);

o zend-mail fornece muitas camadas de transporte e cada uma pode exigir muitos parâmetros adicionais, como nome de usuário, senha, etc.

Métodos de gerenciamento de e-mail

Alguns dos métodos notáveis ​​de gerenciamento de e-mail são os seguintes -

  • isValid - Mensagens sem um endereço 'De' são inválidas.

isValid() : bool
  • setEncoding - Defina a codificação da mensagem.

setEncoding(string $encoding) : void
  • getEncoding - Obtenha a codificação da mensagem.

getEncoding() : string
  • setHeaders - Compor cabeçalhos.

setHeaders(Zend\Mail\Headers $headers) : void
  • getHeaders - Acesse a coleção de cabeçalhos.

getHeaders() : Zend\Mail\Headers
  • setFrom- Definir (substituir) endereços de. Ele contém pares de chave / valor em que a chave é o nome legível por humanos e o valor é o endereço de e-mail.

setFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, string|null $name 
) : void
  • addFrom - Adicione um endereço 'De'.

addFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressOrList, string|null $name 
) : void
  • getFrom - Recuperar lista de remetentes 'De'.

getFrom() : AddressList 
setTo - Overwrite the address list in the To recipients. 
setTo( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, null|string $name 
) : void
  • setSubject - Defina o valor do cabeçalho do assunto da mensagem.

setSubject(string $subject) :void
  • setBody - Defina o corpo da mensagem.

setBody(null|string|Zend\Mime\Message|object $body) : void

Camada de Transporte SMTP

o zend-mail fornece opções para enviar um e-mail usando o servidor SMTP através do Zend\Mail\Transport\Smtpclass. É comoSendmail exceto que tem algumas opções adicionais para configurar o host SMTP, porta, nome de usuário, senha, etc.

O código parcial é o seguinte -

use Zend\Mail\Transport\Smtp as SmtpTransport; 
use Zend\Mail\Transport\SmtpOptions;  
$transport = new SmtpTransport(); $options = new SmtpOptions([ 
   'name' => 'localhost', 
   'host' =>'smtp.gmail.com', 
   'port' => 465, 
]); 
$transport->setOptions($options);

Aqui,

  • name - Nome do host SMTP.

  • host - Nome de host remoto ou endereço IP.

  • port - Porta na qual o host remoto está escutando.

Conceito de Correio - Exemplo

Vamos seguir os seguintes pontos para escrever um aplicativo simples de console php para entender o conceito de e-mail.

  • Crie uma pasta “mailapp”.

  • Instalar zend-mail usando a ferramenta de composição.

  • Crie um arquivo php Mail.php dentro da pasta “mailapp”.

  • Crie a mensagem usando o Zend\Mail\Message.

$message = new Message(); $message->addTo('[email protected]'); 
$message->addFrom('[email protected]'); $message->setSubject('Hello!'); 
$message->setBody("My first Zend-mail application!");
  • Crie a camada de transporte SMTP e adicione a configuração necessária.

// Setup SMTP transport using LOGIN authentication 
$transport = new SmtpTransport(); 
$options = new SmtpOptions([ 'name' => 'localhost', 'host' => 'smtp.gmail.com', // or any SMTP server 'port' => 465, // port on which the SMTP server is listening 'connection_class' => 'login', 'connection_config' => [ username' => '<your username>', 'password' => '<your password>', 'ssl' => 'ssl'], ]); $transport->setOptions($options);
  • Envie o e-mail usando o send método.

$transport->send($message);

A lista completa, Mail.php , é a seguinte -

<?php  
require __DIR__ . '/vendor/autoload.php';  

use Zend\Mail\Message; 
use Zend\Mail\Transport\Smtp as SmtpTransport; 
use Zend\Mail\Transport\SmtpOptions;  
  
$message = new Message(); 
$message->addTo('[email protected]'); $message->addFrom('[email protected]'); 
$message->setSubject('Hello!'); $message->setBody("My first Zend-mail application!");  
  
// Setup SMTP transport using LOGIN authentication 
$transport = new SmtpTransport(); $options = new SmtpOptions([ 
   'name' => 'localhost', 
   'host' => 'smtp.gmail.com', // or any SMTP server 
   'port' => 465, // port on which the SMTP server is listening 
   'connection_class' => 'login', 
   'connection_config' => [ 
      'username' => '<your username>', 'password' => '<your password>', 
      'ssl' => 'ssl'], 
]); 
$transport->setOptions($options); 
$transport->send($message);

Agora, execute o aplicativo no prompt de comando php Mail.php. Isso enviará o e-mail conforme configurado no aplicativo.