Zend Framework - Gestione della posta elettronica

Zend Framework fornisce un componente separato chiamato come zend-mailper inviare messaggi di posta elettronica. Il componente zend-mail fornisce anche un'opzione per leggere e scrivere messaggi di posta elettronica con allegati sia in formato testo che html. L'invio di un'e-mail in Zend è molto più facile e semplice da configurare.

Esaminiamo i concetti di posta elettronica, le impostazioni di base, le impostazioni avanzate come il trasporto SMTP, ecc. In questo capitolo.

Installa il componente di posta

Il componente di posta può essere installato utilizzando il seguente comando Composer.

composer require zendframework/zend-mail

Configurazione email di base

Un'email di base è composta da uno o più destinatari, un oggetto, un corpo e un mittente. Zend fornisceZend\Mail\Messageclass per creare un nuovo messaggio di posta elettronica. Per inviare un'e-mail utilizzando il filezend-mail, è necessario specificare almeno un destinatario e il corpo del messaggio.

Il codice parziale per creare un nuovo messaggio di posta è il seguente:

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 fornisce la classe Zend \ Mail \ Sendmail per inviare il messaggio di posta. Sendmail utilizza la funzione di posta nativa di php, mail per inviare il messaggio di posta e possiamo configurare il livello di trasporto utilizzando il file di configurazione php.

La codifica parziale utilizzando Sendmail è la seguente:

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

Il zend-mail fornisce molti livelli di trasporto e ognuno può richiedere molti parametri aggiuntivi come nome utente, password, ecc

Metodi di gestione della posta elettronica

Alcuni dei metodi di gestione della posta elettronica più importanti sono i seguenti:

  • isValid - I messaggi senza un indirizzo "Da" non sono validi.

isValid() : bool
  • setEncoding - Imposta la codifica del messaggio.

setEncoding(string $encoding) : void
  • getEncoding - Ottieni la codifica del messaggio.

getEncoding() : string
  • setHeaders - Componi intestazioni.

setHeaders(Zend\Mail\Headers $headers) : void
  • getHeaders - Accedere alla raccolta delle intestazioni.

getHeaders() : Zend\Mail\Headers
  • setFrom- Imposta (sovrascrivi) indirizzi da. Contiene una coppia chiave / valore in cui la chiave è il nome leggibile dall'uomo e il valore è l'indirizzo e-mail.

setFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, string|null $name 
) : void
  • addFrom - Aggiungi un indirizzo "Da".

addFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressOrList, string|null $name 
) : void
  • getFrom - Recupera l'elenco dei mittenti "Da".

getFrom() : AddressList 
setTo - Overwrite the address list in the To recipients. 
setTo( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, null|string $name 
) : void
  • setSubject - Imposta il valore dell'intestazione dell'oggetto del messaggio.

setSubject(string $subject) :void
  • setBody - Imposta il corpo del messaggio.

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

Livello di trasporto SMTP

Il zend-mail fornisce opzioni per inviare un'e-mail utilizzando il server SMTP tramite Zend\Mail\Transport\Smtpclass. È comeSendmail tranne per il fatto che ha alcune opzioni aggiuntive per configurare l'host SMTP, la porta, il nome utente, la password, ecc.

Il codice parziale è il seguente:

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);

Qui,

  • name - Nome dell'host SMTP.

  • host - Nome host remoto o indirizzo IP.

  • port - Porta su cui è in ascolto l'host remoto.

Concetto di posta - Esempio

Seguiamo i seguenti punti per scrivere una semplice applicazione per console php per comprendere il concetto di posta.

  • Crea una cartella "mailapp".

  • Installare zend-mail utilizzando lo strumento di composizione.

  • Crea un file php Mail.php all'interno della cartella "mailapp".

  • Crea il messaggio usando il Zend\Mail\Message.

$message = new Message(); $message->addTo('[email protected]'); 
$message->addFrom('[email protected]'); $message->setSubject('Hello!'); 
$message->setBody("My first Zend-mail application!");
  • Crea il livello di trasporto SMTP e aggiungi la configurazione necessaria.

// 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);
  • Invia l'e-mail utilizzando il send metodo.

$transport->send($message);

L'elenco completo, Mail.php è il seguente:

<?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);

Ora, esegui l'applicazione nel prompt dei comandi php Mail.php. Questo invierà la posta come configurato nell'applicazione.