Учебники

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('sender@example.com', "sender-name"); 
$mail->addTo('recipient@test.com', "recipient-name"); 

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

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

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

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

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

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

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

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

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

setEncoding — установить кодировку сообщения.

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

getEncoding — получает кодировку сообщения.

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

setHeadersсоставить заголовки.

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

getHeaders — Доступ к коллекции заголовков.

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

setFrom — Установить (перезаписать) из адресов. Он содержит пары ключ / значение, где ключ — это удобочитаемое имя, а значение — адрес электронной почты.

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

addFrom — добавить адрес «От».

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

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 — Установить значение заголовка темы сообщения.

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

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-адрес.

  • порт — порт, на котором слушает удаленный хост.

name — имя хоста SMTP.

host — Удаленное имя хоста или IP-адрес.

порт — порт, на котором слушает удаленный хост.

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

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

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

  • Установите Zend-Mail с помощью инструмента composer.

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

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

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

Установите Zend-Mail с помощью инструмента composer.

Создайте php-файл Mail.php в папке «mailapp».

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

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

Создайте транспортный уровень 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); 
  • Отправьте письмо, используя метод отправки .

Отправьте письмо, используя метод отправки .

$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('user1@gmail.com'); 
$message->addFrom('user2@gmail.com'); 
$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 . Это отправит письмо, как настроено в приложении.