Zend Framework - Управление электронной почтой

Zend Framework предоставляет отдельный компонент, называемый zend-mailдля отправки сообщений электронной почты. Компонент zend-mail также предоставляет возможность читать и писать сообщения электронной почты с вложениями в текстовом и html формате. Отправка электронной почты в Zend намного проще и проще настроить.

Давайте рассмотрим в этой главе концепции электронной почты, основные настройки, расширенные настройки, такие как транспорт SMTP и т. Д.

Установить почтовый компонент

Почтовый компонент можно установить с помощью следующей команды Composer.

composer require zendframework/zend-mail

Базовая конфигурация электронной почты

Обычное электронное письмо состоит из одного или нескольких получателей, темы, тела и отправителя. Zend предоставляетZend\Mail\Messageкласс, чтобы создать новое сообщение электронной почты. Чтобы отправить электронное письмо с помощьюzend-mail, вы должны указать как минимум одного получателя, а также тело сообщения.

Частичный код для создания нового почтового сообщения выглядит следующим образом:

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 предоставляет класс Zend \ Mail \ Sendmail для отправки почтового сообщения. Sendmail использует встроенную почтовую функцию php, mail для отправки почтового сообщения, и мы можем настроить транспортный уровень с помощью файла конфигурации php.

Частичное кодирование с использованием Sendmail выглядит следующим образом:

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

В zend-mail предоставляет множество транспортных уровней, и для каждого может потребоваться множество дополнительных параметров, таких как имя пользователя, пароль и т. д.

Методы управления электронной почтой

Некоторые из примечательных методов управления электронной почтой следующие:

  • isValid - Сообщения без адреса «От» недействительны.

isValid() : bool
  • setEncoding - Установить кодировку сообщения.

setEncoding(string $encoding) : void
  • getEncoding - Получить кодировку сообщения.

getEncoding() : string
  • setHeaders - Составлять заголовки.

setHeaders(Zend\Mail\Headers $headers) : void
  • getHeaders - Доступ к коллекции заголовков.

getHeaders() : Zend\Mail\Headers
  • setFrom- Установить (перезаписать) адреса From. Он содержит пары ключ / значение, где ключ - это удобочитаемое имя, а значение - адрес электронной почты.

setFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, string|null $name 
) : void
  • addFrom - Добавьте адрес "От".

addFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressOrList, string|null $name 
) : void
  • getFrom - Получить список отправителей "От".

getFrom() : AddressList 
setTo - Overwrite the address list in the To recipients. 
setTo( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, null|string $name 
) : void
  • setSubject - Установите значение заголовка темы сообщения.

setSubject(string $subject) :void
  • setBody - Установить тело сообщения.

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

Транспортный уровень SMTP

В zend-mail предоставляет параметры для отправки электронной почты с помощью SMTP-сервера через Zend\Mail\Transport\Smtpclass. Это какSendmail за исключением того, что у него есть несколько дополнительных параметров для настройки хоста SMTP, порта, имени пользователя, пароля и т. д.

Частичный код выглядит следующим образом -

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

Вот,

  • name - Имя SMTP-хоста.

  • host - Имя удаленного хоста или IP-адрес.

  • port - Порт, который прослушивает удаленный хост.

Концепция почты - пример

Давайте рассмотрим следующие моменты, чтобы написать простое консольное приложение php для понимания концепции почты.

  • Создайте папку «mailapp».

  • Установить zend-mail с помощью инструмента композитора.

  • Создайте файл php Mail.php внутри папки «mailapp».

  • Создайте сообщение, используя Zend\Mail\Message.

$message = new Message(); $message->addTo('[email protected]'); 
$message->addFrom('[email protected]'); $message->setSubject('Hello!'); 
$message->setBody("My first Zend-mail application!");
  • Создайте транспортный уровень SMTP и добавьте необходимую конфигурацию.

// 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);
  • Отправьте электронное письмо с помощью send метод.

$transport->send($message);

Полный список Mail.php выглядит следующим образом:

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

Теперь запустите приложение в командной строке php Mail.php. Это отправит почту, как настроено в приложении.