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. สิ่งนี้จะส่งอีเมลตามที่กำหนดไว้ในแอปพลิเคชัน