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.