Zend Framework - การจัดการอีเมล
Zend Framework จัดเตรียมส่วนประกอบแยกต่างหากที่เรียกว่า zend-mailเพื่อส่งข้อความอีเมล องค์ประกอบ zend-mail ยังมีตัวเลือกในการอ่านและเขียนข้อความอีเมลพร้อมไฟล์แนบทั้งในรูปแบบข้อความและ html การส่งอีเมลใน Zend นั้นง่ายและง่ายมากในการกำหนดค่า
ให้เราดูแนวคิดเกี่ยวกับอีเมลการตั้งค่าพื้นฐานการตั้งค่าขั้นสูงเช่นการขนส่ง SMTP เป็นต้นในบทนี้
ติดตั้ง Mail Component
สามารถติดตั้งคอมโพเนนต์เมลได้โดยใช้คำสั่ง 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 native mail 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- ตั้งค่า (เขียนทับ) จากที่อยู่ ประกอบด้วยคู่คีย์ / ค่าโดยคีย์คือชื่อที่มนุษย์อ่านได้และค่าคือที่อยู่อีเมล
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 console อย่างง่ายเพื่อทำความเข้าใจแนวคิดเมล
สร้างโฟลเดอร์“ 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. สิ่งนี้จะส่งอีเมลตามที่กำหนดไว้ในแอปพลิเคชัน