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.