Zend Framework - E-posta Yönetimi

Zend Framework olarak adlandırılan ayrı bir bileşen sağlar zend-maile-posta mesajları göndermek için. Zend-mail bileşeni ayrıca hem metin hem de html biçiminde ekleri olan e-posta mesajlarını okuma ve yazma seçeneği sunar. Zend'de e-posta göndermek çok daha kolay ve yapılandırması kolaydır.

Bu bölümde e-posta kavramlarını, temel ayarları, SMTP aktarımı gibi gelişmiş ayarları gözden geçirelim.

Mail Bileşenini Yükleyin

Posta bileşeni, aşağıdaki Composer komutu kullanılarak yüklenebilir.

composer require zendframework/zend-mail

Temel E-posta Yapılandırması

Temel bir e-posta, bir veya daha fazla alıcıdan, bir konudan, bir gövdeden ve bir gönderenden oluşur. Zend sağlarZend\Mail\Messageyeni bir e-posta mesajı oluşturmak için sınıf. Kullanarak bir e-posta göndermek içinzend-mail, en az bir alıcı ve bir ileti gövdesi belirtmelisiniz.

Yeni bir posta mesajı oluşturmak için kısmi kod aşağıdaki gibidir -

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, posta mesajını göndermek için Zend \ Mail \ Sendmail sınıfını sağlar. Sendmail php yerel posta işlevini kullanır, mail posta mesajını göndermek için ve php yapılandırma dosyasını kullanarak taşıma katmanını yapılandırabiliriz.

Sendmail kullanarak kısmi kodlama aşağıdaki gibidir -

$transport = new Mail\Transport\Sendmail(); 
$transport->send($mail);

zend-mail birçok taşıma katmanı sağlar ve her biri kullanıcı adı, şifre vb. gibi birçok ek parametre gerektirebilir.

E-posta Yönetim Yöntemleri

Önemli e-posta yönetim yöntemlerinden bazıları aşağıdaki gibidir -

  • isValid - 'Gönderen' adresi olmayan iletiler geçersizdir.

isValid() : bool
  • setEncoding - Mesaj kodlamasını ayarlayın.

setEncoding(string $encoding) : void
  • getEncoding - Mesaj kodlamasını alın.

getEncoding() : string
  • setHeaders - Başlıklar oluşturun.

setHeaders(Zend\Mail\Headers $headers) : void
  • getHeaders - Başlıklar koleksiyonuna erişin.

getHeaders() : Zend\Mail\Headers
  • setFrom- Gönderen adreslerini ayarlayın (üzerine yazın). Anahtarın okunabilir ad olduğu ve değerin e-posta adresi olduğu bir anahtar / değer çiftleri içerir.

setFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, string|null $name 
) : void
  • addFrom - Bir 'Gönderen' adresi ekleyin.

addFrom( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressOrList, string|null $name 
) : void
  • getFrom - 'Gönderen' gönderenlerin listesini alın.

getFrom() : AddressList 
setTo - Overwrite the address list in the To recipients. 
setTo( 
   string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, null|string $name 
) : void
  • setSubject - Mesaj konusu başlık değerini ayarlayın.

setSubject(string $subject) :void
  • setBody - Mesaj gövdesini ayarlayın.

setBody(null|string|Zend\Mime\Message|object $body) : void

SMTP Aktarım Katmanı

zend-mail SMTP sunucusunu kullanarak bir e-posta göndermek için seçenekler sağlar. Zend\Mail\Transport\Smtpclass. GibiSendmail SMTP ana bilgisayarını, bağlantı noktasını, kullanıcı adını, şifreyi vb. yapılandırmak için birkaç ek seçeneğe sahip olması dışında.

Kısmi kod aşağıdaki gibidir -

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);

Buraya,

  • name - SMTP ana bilgisayarının adı.

  • host - Uzak ana bilgisayar adı veya IP adresi.

  • port - Uzak ana bilgisayarın dinlediği bağlantı noktası.

Posta Kavramı - Örnek

Mail kavramını anlamak için basit bir php konsol uygulaması yazmak için aşağıdaki noktaları takip edelim.

  • Bir "mailapp" klasörü oluşturun.

  • Yüklemek zend-mail besteci aracını kullanarak.

  • Bir php dosyası oluşturun Mail.php "mailapp" klasörünün içinde.

  • Kullanarak mesajı oluşturun 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 taşıma katmanını oluşturun ve gerekli yapılandırmayı ekleyin.

// 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);
  • E-postayı kullanarak gönderin send yöntem.

$transport->send($message);

Mail.php listesinin tamamı aşağıdaki gibidir -

<?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);

Şimdi uygulamayı komut isteminde çalıştırın php Mail.php. Bu, postayı uygulamada yapılandırıldığı şekilde gönderecektir.