Zend Framework - E-Mail-Verwaltung

Das Zend Framework bietet eine separate Komponente namens zend-mailum E-Mail-Nachrichten zu senden. Die zend-mail-Komponente bietet auch die Möglichkeit, E-Mail-Nachrichten mit Anhängen im Text- und HTML-Format zu lesen und zu schreiben. Das Senden einer E-Mail in Zend ist viel einfacher und einfacher zu konfigurieren.

Lassen Sie uns in diesem Kapitel die E-Mail-Konzepte, Grundeinstellungen, erweiterten Einstellungen wie SMTP-Transport usw. durchgehen.

Installieren Sie die Mail-Komponente

Die Mail-Komponente kann mit dem folgenden Composer-Befehl installiert werden.

composer require zendframework/zend-mail

Grundlegende E-Mail-Konfiguration

Eine einfache E-Mail besteht aus einem oder mehreren Empfängern, einem Betreff, einem Textkörper und einem Absender. Zend bietetZend\Mail\MessageKlasse, um eine neue E-Mail-Nachricht zu erstellen. So senden Sie eine E-Mail mit demzend-mailmüssen Sie mindestens einen Empfänger sowie einen Nachrichtentext angeben.

Der Teilcode zum Erstellen einer neuen E-Mail-Nachricht lautet wie folgt:

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 bietet die Klasse Zend \ Mail \ Sendmail zum Senden der E-Mail-Nachricht. Sendmail verwendet die native PHP-Mail-Funktion, mail Um die Mail-Nachricht zu senden, können wir die Transportschicht mithilfe der PHP-Konfigurationsdatei konfigurieren.

Die teilweise Codierung mit Sendmail lautet wie folgt:

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

Das zend-mail bietet viele Transportschichten und erfordert möglicherweise viele zusätzliche Parameter wie Benutzername, Passwort usw.

E-Mail-Verwaltungsmethoden

Einige der bemerkenswerten E-Mail-Verwaltungsmethoden sind wie folgt:

  • isValid - Nachrichten ohne 'Von'-Adresse sind ungültig.

isValid() : bool
  • setEncoding - Stellen Sie die Nachrichtenkodierung ein.

setEncoding(string $encoding) : void
  • getEncoding - Holen Sie sich die Nachrichtenkodierung.

getEncoding() : string
  • setHeaders - Überschriften verfassen.

setHeaders(Zend\Mail\Headers $headers) : void
  • getHeaders - Zugriff auf die Headersammlung.

getHeaders() : Zend\Mail\Headers
  • setFrom- Von Adressen setzen (überschreiben). Es enthält ein Schlüssel / Wert-Paar, wobei der Schlüssel der vom Menschen lesbare Name und der Wert die E-Mail-Adresse ist.

setFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, 
      string|null $name 
) : void
  • addFrom - Fügen Sie eine Absenderadresse hinzu.

addFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressOrList, 
      string|null $name 
) : void
  • getFrom - Liste der Absender abrufen.

getFrom() : AddressList 
setTo - Overwrite the address list in the To recipients. 
setTo( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, 
      null|string $name 
) : void
  • setSubject - Legen Sie den Header-Wert für den Betreff der Nachricht fest.

setSubject(string $subject) :void
  • setBody - Stellen Sie den Nachrichtentext ein.

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

SMTP-Transportschicht

Das zend-mail bietet Optionen zum Senden einer E-Mail über den SMTP-Server über das Zend\Mail\Transport\Smtpclass. Es ist wieSendmail Es stehen jedoch einige zusätzliche Optionen zum Konfigurieren des SMTP-Hosts, des Ports, des Benutzernamens, des Kennworts usw. zur Verfügung.

Der Teilcode lautet wie folgt:

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

Hier,

  • name - Name des SMTP-Hosts.

  • host - Remote-Hostname oder IP-Adresse.

  • port - Port, an dem der Remote-Host empfangsbereit ist.

Mail-Konzept - Beispiel

Lassen Sie uns die folgenden Punkte befolgen, um eine einfache PHP-Konsolenanwendung zu schreiben, um das Mail-Konzept zu verstehen.

  • Erstellen Sie einen Ordner "mailapp".

  • Installieren zend-mail mit dem Composer-Tool.

  • Erstellen Sie eine PHP-Datei Mail.php im Ordner "mailapp".

  • Erstellen Sie die Nachricht mit dem Zend\Mail\Message.

$message = new Message(); 
$message->addTo('[email protected]'); 
$message->addFrom('[email protected]'); 
$message->setSubject('Hello!'); 
$message->setBody("My first Zend-mail application!");
  • Erstellen Sie die SMTP-Transportschicht und fügen Sie die erforderliche Konfiguration hinzu.

// 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);
  • Senden Sie die E-Mail mit dem send Methode.

$transport->send($message);

Die vollständige Auflistung, Mail.php ist wie folgt -

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

Führen Sie nun die Anwendung an der Eingabeaufforderung aus php Mail.php. Dadurch wird die E-Mail wie in der Anwendung konfiguriert gesendet.