Zend Framework - Gestion des e-mails

Le Zend Framework fournit un composant séparé appelé zend-mailpour envoyer des e-mails. Le composant zend-mail fournit également une option pour lire et écrire des messages électroniques avec des pièces jointes au format texte et html. L'envoi d'un e-mail dans Zend est beaucoup plus facile et simple à configurer.

Passons en revue les concepts de messagerie, les paramètres de base, les paramètres avancés tels que le transport SMTP, etc., dans ce chapitre.

Installer le composant Mail

Le composant de messagerie peut être installé à l'aide de la commande Composer suivante.

composer require zendframework/zend-mail

Configuration de base des e-mails

Un e-mail de base se compose d'un ou plusieurs destinataires, d'un objet, d'un corps et d'un expéditeur. Zend fournitZend\Mail\Messageclasse pour créer un nouveau message électronique. Pour envoyer un e-mail à l'aide duzend-mail, vous devez spécifier au moins un destinataire ainsi qu'un corps de message.

Le code partiel pour créer un nouveau message électronique est le suivant -

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 fournit la classe Zend \ Mail \ Sendmail pour envoyer le message électronique. Sendmail utilise la fonction mail native de php, mail pour envoyer le message électronique et nous pouvons configurer la couche de transport en utilisant le fichier de configuration php.

Le codage partiel à l'aide de Sendmail est le suivant -

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

le zend-mail fournit de nombreuses couches de transport et chacune peut nécessiter de nombreux paramètres supplémentaires tels que le nom d'utilisateur, le mot de passe, etc.

Méthodes de gestion des e-mails

Certaines des méthodes de gestion des e-mails notables sont les suivantes -

  • isValid - Les messages sans adresse «De» ne sont pas valides.

isValid() : bool
  • setEncoding - Définissez le codage du message.

setEncoding(string $encoding) : void
  • getEncoding - Obtenez le codage du message.

getEncoding() : string
  • setHeaders - Composez les en-têtes.

setHeaders(Zend\Mail\Headers $headers) : void
  • getHeaders - Accédez à la collection d'en-têtes.

getHeaders() : Zend\Mail\Headers
  • setFrom- Définir (écraser) les adresses From. Il contient une paire clé / valeur où la clé est le nom lisible par l'homme et la valeur est l'adresse e-mail.

setFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, string|null $name 
) : void
  • addFrom - Ajoutez une adresse «De».

addFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressOrList, string|null $name 
) : void
  • getFrom - Récupérer la liste des expéditeurs «De».

getFrom() : AddressList 
setTo - Overwrite the address list in the To recipients. 
setTo( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, null|string $name 
) : void
  • setSubject - Définissez la valeur de l'en-tête de l'objet du message.

setSubject(string $subject) :void
  • setBody - Définissez le corps du message.

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

Couche de transport SMTP

le zend-mail fournit des options pour envoyer un e-mail à l'aide du serveur SMTP via le Zend\Mail\Transport\Smtpclass. C'est commeSendmail sauf qu'il dispose de quelques options supplémentaires pour configurer l'hôte SMTP, le port, le nom d'utilisateur, le mot de passe, etc.

Le code partiel est le suivant -

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

Ici,

  • name - Nom de l'hôte SMTP.

  • host - Nom d'hôte ou adresse IP distant.

  • port - Port sur lequel l'hôte distant écoute.

Concept de courrier - Exemple

Suivons les points suivants pour écrire une application console php simple pour comprendre le concept de messagerie.

  • Créez un dossier «mailapp».

  • Installer zend-mail à l'aide de l'outil de composition.

  • Créer un fichier php Mail.php dans le dossier «mailapp».

  • Créez le message en utilisant le Zend\Mail\Message.

$message = new Message(); $message->addTo('[email protected]'); 
$message->addFrom('[email protected]'); $message->setSubject('Hello!'); 
$message->setBody("My first Zend-mail application!");
  • Créez la couche de transport SMTP et ajoutez la configuration nécessaire.

// 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);
  • Envoyez l'e-mail en utilisant le send méthode.

$transport->send($message);

La liste complète, Mail.php est la suivante -

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

Maintenant, exécutez l'application dans l'invite de commande php Mail.php. Cela enverra le courrier comme configuré dans l'application.