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, 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('[email protected]'); $message->addFrom('[email protected]'); $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('[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 . Это отправит письмо, как настроено в приложении.