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. Это отправит почту, как настроено в приложении.