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.