E-posta Kütüphanesi


    × Bunları biliyor muydunuz?
"Kontrolcü yöntemlerine parametre olarak enjekte edilen sınıfların örneklerine aynı zamanda görünmlerinden de erişebilirsiniz."


E-posta gönderme işlevini yerine getiren sınıftır.

 

 

# Kurulum


ZN dağıtımları için kurulum gerekmez.

↓ composer require znframework/package-email

 

 

# Yöntemler


Email::settings(array $settings = NULL) : this
Email::to(mixed $to, string $name) : this
Email::receiver(mixed $to, string $name) : this
Email::replyTo(mixed $replyTo, string $name) : this
Email::cc(mixed $cc, string $name) : this
Email::bcc(mixed $bcc, string $name) : this
Email::from(string $from, string $name = NULL, string $returnPath = NULL) : this
Email::sender(string $from, string $name = NULL, string $returnPath = NULL) : this
Email::subject(string $subject) : this
Email::message(string $message) : this
Email::content(string $message) : this
Email::template(string $message, mixed $columnOrData, array $data = []) : this
Email::templateMatch(string $content, array $data) : string
Email::attachment(string $file, string $disposition = 'attachment', string $newName = NULL, mixed $mime = NULL) : this
Email::addHeader(string $header, string $value) : this
Email::send(string $subject = NULL, string $message = NULL) : bool
Email::error(void) : mixed
Email::driver(string $driver) : this
Email::contentType(string $type = 'plain') : this
Email::charset(string $charset = 'UTF-8')  : this
Email::priority(int $count = 3) : this
Email::encodingType(string $type = '8bit') : this
Email::multiPart(string $multiPart = 'related') : this
Email::smtpHost(string $host) : this
Email::smtpUser(string $user) : this
Email::smtpDsn(bool $dsn = true) : this
Email::smtpPassword(string $pass) : this
Email::smtpPort(int $port = 587) : this
Email::smtpTimeout(int $timeout = 10) : this
Email::smtpKeepAlive(bool $keepAlive = true) : this
Email::smtpEncode(string $encode) : this
Email::lf(string $type) : this
Email::cr(string $type) : this

 

 

# Yapılandırma


File: Config/Services.php
Email
string $driver = 'smtp' E-posta gönderiminin hangi sürücü ile yapılacağı belirtilir.
Seçenekler smtpimap
SMTP
string $host = '' E-posta sunucusu adı.
string $user = '' E-posta kullanıcı adı.
string $password = '' E-posta kullanıcı şifresi.
int $port = 587 Sunucu bağlantı portu.
bool $keepAlive = false Kalıcı SMTP bağlantılarını etkinleştir.
int $timeout = 10 Bağlantı zaman aşımı süresi.
string $encode = '' SMTP bağlantı şifreleme türü.
Seçenekler tls, ssl
bool $dsn = false İletiyi sunucudan bildir.
bool $auth = true E-posta kullanıcı oturumunun açık tutulması.
General
string $senderMail = '' Ön tanımlı gönderici e-posta adresi.
string $senderName = '' Ön tanımlı gönderici adı.
int $priority = 3 Öncelik seviyesi
Seçenekler 1 = En yüksek. 5 = En düşük. 3 = Normal.
string $charset = 'UTF-8' E-posta karakter seti.
string $contentType = 'html' E-posta içerik türü. 
Seçenekler html, plain
string $multiPart = 'mixed'  
Seçenekler mixed, related, alternative
string $xMailer = 'ZN'  
string $encoding = '8bit' Kodlama türü.
Seçenekler 8bit, 7bit
string $mimeVersion = '1.0' Mime versiyonu
string $mailPath = '/usr/sbin/sendmail' Sunucu e-posta gönderim yolu.

 

 

# Settings


E-posta gönderim ayarları normalde Config/Services.php dosyası üzerinden yapılmaktadır. Ancak bazı durumlarda ayarları gönderim esnasında yapılandırmanız gerekirse bu yöntem kullanılır. Farklı bağlantılarla çoklu e-posta gönderimi gerekirse bu yöntem kullanılır.

Parmetreler

array $settings Yapılandırılacak ayarlar.
return this

Kullanımı

Email::settings
     ([
         'smtpHost'     => 'mail.example.com', 
         'smtpUser'     => '[email protected]', 
         'smtpPassword' => '1234'
     ])
     ->sender('[email protected]', 'ZNTR')
     ->receiver('[email protected]')
     ->subject('Konu')
     ->message('Mesaj')
     ->send();

 

 

# To / Receiver


E-posta alıcı bilgisi oluşturumak için kullanılırlar. Her iki yöntemin görevide aynıdır.

Parametreler

mixed $toMail Alıcı e-posta adresi. Çoklu gönderim yapılacaksa bu parametre dizi kabul eder.
string $toName Alıcı adı.
return this

Kullanımı

Email::to('[email protected]', 'To Example');

Eğer çoklu alıcı bilgisi eklenecekse aşadağıdaki gibi kullanılabilir.

Email::to('[email protected]', 'To 1')
     ->to('[email protected]', 'To 2')
     ->to('[email protected]', 'To 3')

Dizi olarak da çoklu alıcı belirtilebilir.

Email::to(['[email protected]' => 'To1', '[email protected]' => 'To2']);

 

 

# ReplyTo


E-posta gönderen kişiye gönderim için alıcı bilgisi oluşturur.

Parametreler

mixed $toMail Alıcı e-posta adresi. Çoklu gönderim yapılacaksa bu parametre dizi kabul eder.
string $toName Alıcı adı.
return this

Kullanımı

Email::replyTo('[email protected]', 'To Example');

Eğer çoklu alıcı bilgisi eklenecekse aşağıdaki gibi kullanılabilir.

Email::replyTo('[email protected]', 'To 1')
     ->replyTo('[email protected]', 'To 2')
     ->replyTo('[email protected]', 'To 3')

Dizi olarak da çoklu alıcı belirtilebilir.

Email::replyTo(['[email protected]' => 'To1', '[email protected]' => 'To2']);

 

 

# CC


Çoklu e-posta alıcısı oluşturmak için kullanılır.

Parametreler

mixed $toMail Alıcı e-posta adresi. Çoklu gönderim yapılacaksa bu parametre dizi kabul eder.
string $toName Alıcı adı.
return this

Kullanımı

Email::cc('[email protected]', 'To Example');

Eğer çoklu alıcı bilgisi eklenecekse aşağıdaki gibi kullanılabilir.

Email::cc('[email protected]', 'To 1')
     ->cc('[email protected]', 'To 2')
     ->cc('[email protected]', 'To 3')

Dizi olarak da çoklu alıcı belirtilebilir.

Email::cc(['[email protected]' => 'To1', '[email protected]' => 'To2']);

 

 

# BCC


Çoklu e-posta alıcısı oluşturmak için kullanılır. CC' den farkı e-posta adresleri alıcılar tarafından görülemez.

Parametreler

mixed $toMail Alıcı e-posta adresi. Çoklu gönderim yapılacaksa bu parametre dizi kabul eder.
string $toName Alıcı adı.
return this

Kullanımı

Email::bcc('[email protected]', 'To Example');

Eğer çoklu alıcı bilgisi eklenecekse aşadağıdaki gibi kullanılabilir.

Email::bcc('[email protected]', 'To 1')
     ->bcc('[email protected]', 'To 2')
     ->bcc('[email protected]', 'To 3')

Dizi olarak da çoklu alıcı belirtilebilir.

Email::bcc(['[email protected]' => 'To1', '[email protected]' => 'To2']);

 

 

# From / Sender


E - posta gönderici bilgisi oluşturmak için kullanılır.

Parametreler

string $fromMail Gönderen e-posta adresi.
string $fromName = NULL Gönderen adı.
string $returnPath = NULL Teslim edilmeyen e-postaların hangi adrese yönlendirileceğini belirtir.
return this

Kullanımı

Email::from('[email protected]', 'Example', '[email protected]')
     ->to('[email protected]', 'To')
     ->content('Message')
     ->subject('Subject')
     ->send();

 

 

# Subject


Gönderimi yapılacak e-posta adresinin konusu belirtmek için kullanılır.

Parametreler

string $subject Konu.
return this

Kullanımı

Email::subject('this E-posta is Examples');

 

 

# Message / Content

Gönderimi yapılacak e-posta adresinin içeriğini belirtmek için kullanılır. Yukarıdaki her iki yönteminde görevi aynıdır.

Parametreler

string $content İçerik.
return this

Kullanımı

Email::subject('this Mail is Examples')
     ->message('Hi, this mail is examples.');

 

 

# Template


Bu yöntem e-posta içeriğini belli bir şablon formunda göndermek için kullanılır. Bu yöntem kullanıldığı zaman message() veya content() yöntemi kullanılmaz. Biçimli içerikler göndermek için oldukça kullanışlıdır. Bir kaç formda kullanımı vardır. İsterseniz veritabanına kaydettiğiniz ya da Resources/Templates/ dizinlerindeki şablonları gönderim için kullanabilirsiniz.

Veritabanı Şablonları ile Kullanım

Bu kullanım veritabanında kayıtlı e-posta şablonlarınız içindir. Şablonlarınızı biçimlendirmek için kullanacağınız anahtar ifadeler {{key}} formunda kullanılmalıdır.

Parametreler

string $tableAndColumn Tablo ve kolon adı. Şablonun hangi tablo ve kolondan çekileceğidir. Kullanımı: table_name:column_name
string $whereColumnAndValue Hangi şablonun kullanılacağıdır. Kullanımı: column_name:value
array $data = [] Şablon ile eşlecek data. Şablondaki {{name}} gibi ifadelerle eşleşme sağlar.
return this

Kullanımlar

Bu kullanım şablonu doğrudan veritabanından çekmek için kullanılır.

+----+---------+----------------+-----------------+
| ID | NAME    | CONTENT        | EMAIL_TEMPLATES |    
+----+--------------------------+-----------------+
| 1  | example | Hello {{name}}                   |
+----+--------------------------------------------+ 
Email::sender('robot@znframework')
     ->receiver('[email protected]')
     ->subject('Example')
     ->template('email_templates:content', 'name:example', 
     [
         'name'  => 'ZN'
     ])
     ->send();

Dizin Şablonları ile Kullanım

External/Resources/Templates/ veya Project/Resources/Templates/ dizinleri içine kaydedilen şablon dosyaları kullanılır.

Parametreler

string $tableAndColumn Gönderilecek şablon adı. Belirtilen dizinlerdeki dosya adı.
array $data = [] Gönderilecek data.
return this

Kullanımlar

Dosya: Resources/Templates/example.wizard.php
Name {{$name}}
Dosya: Controllers/Home.php
Email::subject('Example')->template('example', ['name' => 'ZN'])->send();

 

 

# TemplateMatch


Email::template() yönteminin harici olarak kullanımıdır. Gelen e-posta şablonunu parse eder. 

Parametreler

string $content Parse edilecek içerik.
array $data İçerikte yer alan anahtar ifadelerin değiştirileceği değerler dizisi.
return string

Kullanımı

echo Email::templateMatch('Hello {{user}}', ['user' => 'ZN']);
Hello ZN

 

 

# Attachment


E-posta gönderimi sırasında e-postaya ek eklemek için kullanılır. Bu ekler dosya, resim vb... olabilir.

Parametreler

string $file Dosya yolu/ad��.
string
$disposition = 'attachment'
Ekin eğilimi. Çoğu e-posta istemcisi burada kullanılan MIME belirtiminden bağımsız olarak kendi kararını verir.
Seçenekler Content Disposition Values
string $newName = NULL Dosyanın e-postada görünen adı. Bu parametre belirtilmezse dosyanın kendi ismi atanır.
mixed $mime = NULL İçeriğin mime türü. Bu parametre belirtilmezse dosyanın uzantısına göre geçerli mime uzantısı atanır.
return this

Kullanımı

Email::attachment('image.jpg');
     ->attachment('text.txt', 'inline', 'content.txt', 'text/plain');
Email::attachment('example/files/word.pdf', 'attachment', 'word.pdf', 'pdf');

 

 

# AddHeader


E-postaya üst bilgi eklemek için kullanılabilir.

Parametreler

string $key Eklenecek üst bilgi anahtarı.
string $value Üst bilginin içereceği değer.
return this

Kullanımı

Email::attachment('image.jpg')
     ->to('[email protected]')
     ->from('[email protected]')
     ->addHeader('Header-Example', 'Header Example')
     ->addHeader('Data', 'Example Data')
     ->send();

 

 

# Send


E-posta gönderimini sağlayan nihai yöntemdir. Her e-posta gönderimi bu yöntemle bitmelidir.

Parametreler

string $subject = NULL subject() yöntemi yerine kullanılabilir.
string $message = NULL message() yöntemi yerine kullanılabilir.
return bool

Kullanımı

Email::from('[email protected]')
     ->to('[email protected]')
     ->send('this is Subject', 'this is message.');

 

 

# Error


E-posta gönderimi esnasında herhangi bir sorun oluştuğunda sorunun ne olduğu hakkında bilgi veren yöntemdir.

Parametreler

void
return mixed

Kullanımı

Email::from('[email protected]')
     ->to('[email protected]')
     ->send('this is Subject', 'this is message.');

output(Email::error());

 

# LF [8.10.0][2024-04-12]

E-posta'nın yapısını oluşturan parametreleri ayırmak için varsayılan olarak \n kullanılır. Bazı sistemlerde bu değerin \r\n olması gerekebilir. Bu yapılandırma geneli kapsayacaksa Config/Services.php:email dizisinden yapılandırılabilir.

Parametreler

string $type Kullanılabilir değerler: \n, \r veya \r\n seçenekleridir.
return this

Kullanımı

Email::lf("\r\n")
     ->to('[email protected]')
     ->send('this is Subject', 'this is message.');

 

 

# CR [8.10.0][2024-04-12]

SMTP gönderiminde komutlara ayraç eklemek için varsayılan olarak \n kullanılır. Bazı sistemlerde bu değerin \r\n olması gerekebilir. Bu yapılandırma geneli kapsayacaksa Config/Services.php:email dizisinden yapılandırılabilir.

Parametreler

string $type Kullanılabilir değerler: \n, \r veya \r\n seçenekleridir.
return this

Kullanımı

Email::cr("\r\n")
     ->to('[email protected]')
     ->send('this is Subject', 'this is message.');