Zend Framework - zarządzanie pocztą e-mail

Zend Framework dostarcza oddzielny komponent o nazwie as zend-maildo wysyłania wiadomości e-mail. Komponent zend-mail zapewnia również opcję czytania i pisania wiadomości e-mail z załącznikami zarówno w formacie tekstowym, jak i html. Wysyłanie wiadomości e-mail w Zend jest dużo łatwiejsze i proste w konfiguracji.

Przejdźmy przez pojęcia związane z pocztą elektroniczną, podstawowe ustawienia, ustawienia zaawansowane, takie jak transport SMTP itp. W tym rozdziale.

Zainstaluj składnik poczty

Komponent poczty można zainstalować za pomocą następującego polecenia Composer.

composer require zendframework/zend-mail

Podstawowa konfiguracja poczty e-mail

Podstawowa wiadomość e-mail składa się z co najmniej jednego odbiorcy, tematu, treści i nadawcy. Zend zapewniaZend\Mail\Messageclass, aby utworzyć nową wiadomość e-mail. Aby wysłać wiadomość e-mail przy użyciuzend-mail, musisz określić przynajmniej jednego odbiorcę oraz treść wiadomości.

Częściowy kod do utworzenia nowej wiadomości e-mail jest następujący -

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 udostępnia klasę Zend \ Mail \ Sendmail do wysyłania wiadomości e-mail. Sendmail używa natywnej funkcji poczty php, mail aby wysłać wiadomość e-mail i możemy skonfigurować warstwę transportową za pomocą pliku konfiguracyjnego php.

Częściowe kodowanie za pomocą Sendmaila jest następujące -

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

Plik zend-mail zapewnia wiele warstw transportowych i każda z nich może wymagać wielu dodatkowych parametrów, takich jak nazwa użytkownika, hasło itp

Metody zarządzania pocztą e-mail

Niektóre z godnych uwagi metod zarządzania pocztą e-mail są następujące:

  • isValid - Wiadomości bez adresu „Od” są nieprawidłowe.

isValid() : bool
  • setEncoding - Ustaw kodowanie wiadomości.

setEncoding(string $encoding) : void
  • getEncoding - Uzyskaj kodowanie wiadomości.

getEncoding() : string
  • setHeaders - Twórz nagłówki.

setHeaders(Zend\Mail\Headers $headers) : void
  • getHeaders - Dostęp do kolekcji nagłówków.

getHeaders() : Zend\Mail\Headers
  • setFrom- Ustaw (nadpisz) z adresów. Zawiera pary klucz / wartość, gdzie klucz jest nazwą czytelną dla człowieka, a wartością jest adres e-mail.

setFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, string|null $name 
) : void
  • addFrom - Dodaj adres „Od”.

addFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressOrList, string|null $name 
) : void
  • getFrom - Pobierz listę nadawców „Od”.

getFrom() : AddressList 
setTo - Overwrite the address list in the To recipients. 
setTo( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, null|string $name 
) : void
  • setSubject - Ustaw wartość nagłówka tematu wiadomości.

setSubject(string $subject) :void
  • setBody - Ustaw treść wiadomości.

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

Warstwa transportowa SMTP

Plik zend-mail udostępnia opcje wysyłania wiadomości e-mail przy użyciu serwera SMTP za pośrednictwem Zend\Mail\Transport\Smtpclass. To jest jakSendmail poza tym, że ma kilka dodatkowych opcji konfiguracji hosta SMTP, portu, nazwy użytkownika, hasła itp.

Częściowy kod jest następujący -

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

Tutaj,

  • name - nazwa hosta SMTP.

  • host - Zdalna nazwa hosta lub adres IP.

  • port - Port, na którym nasłuchuje host zdalny.

Koncepcja poczty - przykład

Postępujmy zgodnie z następującymi punktami, aby napisać prostą aplikację konsoli php, aby zrozumieć koncepcję poczty.

  • Utwórz folder „mailapp”.

  • zainstalować zend-mail za pomocą narzędzia kompozytora.

  • Utwórz plik php Mail.php wewnątrz folderu „mailapp”.

  • Utwórz wiadomość za pomocą Zend\Mail\Message.

$message = new Message(); $message->addTo('[email protected]'); 
$message->addFrom('[email protected]'); $message->setSubject('Hello!'); 
$message->setBody("My first Zend-mail application!");
  • Utwórz warstwę transportową SMTP i dodaj niezbędną konfigurację.

// 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);
  • Wyślij wiadomość e-mail za pomocą send metoda.

$transport->send($message);

Pełna lista Mail.php jest następująca -

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

Teraz uruchom aplikację w wierszu polecenia php Mail.php. Spowoduje to wysłanie poczty zgodnie z konfiguracją w aplikacji.