Zend Framework - Quản lý Email
Zend Framework cung cấp một thành phần riêng biệt được gọi là zend-mailđể gửi tin nhắn email. Thành phần zend-mail cũng cung cấp một tùy chọn để đọc và viết các email có tệp đính kèm ở cả định dạng văn bản và html. Gửi email trong Zend dễ dàng hơn nhiều và cấu hình đơn giản.
Chúng ta hãy xem qua các khái niệm email, cài đặt cơ bản, cài đặt nâng cao như truyền tải SMTP, v.v., trong chương này.
Cài đặt cấu phần thư
Thành phần thư có thể được cài đặt bằng lệnh Trình soạn thảo sau.
composer require zendframework/zend-mail
Cấu hình Email Cơ bản
Một email cơ bản bao gồm một hoặc nhiều người nhận, một chủ đề, một nội dung và một người gửi. Zend cung cấpZend\Mail\Messagelớp để tạo một thư email mới. Để gửi email bằng cách sử dụngzend-mail, bạn phải chỉ định ít nhất một người nhận cũng như nội dung thư.
Mã một phần để tạo một thư mới như sau:
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 cung cấp lớp Zend \ Mail \ Sendmail để gửi thư. Sendmail sử dụng chức năng thư gốc php, mail để gửi thư và chúng ta có thể cấu hình lớp truyền tải bằng cách sử dụng tệp cấu hình php.
Mã hóa một phần bằng Sendmail như sau:
$transport = new Mail\Transport\Sendmail();
$transport->send($mail);
Các zend-mail cung cấp nhiều lớp truyền tải và mỗi lớp có thể yêu cầu nhiều tham số bổ sung như tên người dùng, mật khẩu, v.v.
Phương pháp quản lý email
Một số phương pháp quản lý email đáng chú ý như sau:
isValid - Thư không có địa chỉ 'Từ' là không hợp lệ.
isValid() : bool
setEncoding - Đặt mã hóa tin nhắn.
setEncoding(string $encoding) : void
getEncoding - Nhận mã hóa tin nhắn.
getEncoding() : string
setHeaders - Soạn các tiêu đề.
setHeaders(Zend\Mail\Headers $headers) : void
getHeaders - Truy cập bộ sưu tập tiêu đề.
getHeaders() : Zend\Mail\Headers
setFrom- Đặt (ghi đè) Từ địa chỉ. Nó chứa một cặp khóa / giá trị trong đó khóa là tên có thể đọc được của con người và giá trị là địa chỉ email.
setFrom(
string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, string|null $name
) : void
addFrom - Thêm địa chỉ 'Từ'.
addFrom(
string|AddressInterface|array|AddressList|Traversable $emailOrAddressOrList, string|null $name
) : void
getFrom - Truy xuất danh sách người gửi 'Từ'.
getFrom() : AddressList
setTo - Overwrite the address list in the To recipients.
setTo(
string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, null|string $name
) : void
setSubject - Đặt giá trị tiêu đề chủ đề thư.
setSubject(string $subject) :void
setBody - Đặt nội dung thư.
setBody(null|string|Zend\Mime\Message|object $body) : void
Lớp truyền tải SMTP
Các zend-mail cung cấp các tùy chọn để gửi email bằng máy chủ SMTP thông qua Zend\Mail\Transport\Smtpclass. Nó giống nhưSendmail ngoại trừ việc nó có một số tùy chọn bổ sung để định cấu hình máy chủ lưu trữ SMTP, cổng, tên người dùng, mật khẩu, v.v.
Mã một phần như sau:
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);
Đây,
name - Tên của máy chủ lưu trữ SMTP.
host - Tên máy chủ hoặc địa chỉ IP từ xa.
port - Cổng mà máy chủ từ xa đang nghe.
Khái niệm Thư - Ví dụ
Chúng ta hãy làm theo các điểm sau đây để viết một ứng dụng bàn điều khiển php đơn giản để hiểu khái niệm thư.
Tạo một thư mục “mailapp”.
Tải về zend-mail bằng cách sử dụng công cụ soạn nhạc.
Tạo một tệp php Mail.php bên trong thư mục "mailapp".
Tạo tin nhắn bằng cách sử dụng Zend\Mail\Message.
$message = new Message(); $message->addTo('[email protected]');
$message->addFrom('[email protected]'); $message->setSubject('Hello!');
$message->setBody("My first Zend-mail application!");
Tạo lớp truyền tải SMTP và thêm cấu hình cần thiết.
// 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);
Gửi email bằng cách sử dụng send phương pháp.
$transport->send($message);
Danh sách đầy đủ, Mail.php như sau:
<?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);
Bây giờ, chạy ứng dụng trong dấu nhắc lệnh php Mail.php. Thao tác này sẽ gửi thư như được định cấu hình trong ứng dụng.