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.