PHPMailer (SMTP E-posta Gönderimi)

artiframe add phpmailer eklentisi, dünyanın en çok kullanılan e-posta gönderim kütüphanesi olan phpmailer/phpmailer paketini projenize ekler. PHP'nin yerleşik mail() fonksiyonunun spama düşme, SMTP hataları ve sunucu engellemeleri gibi dertleriyle uğraşmak yerine, src/Service/Mailer.php wrapper'ı üzerinden güvenle ve dosya ekli HTML mailler atabilirsiniz.

1. Kurulum ve Yapılandırma

Eklentiyi kurmak için terminalinize şu komutu girin:

terminal
$ artiframe add phpmailer

Komut çalıştıktan sonra .env dosyanıza SMTP yapılandırma değişkenleri eklenecektir. Bu bilgileri hosting veya mail sağlayıcınızdan (Örn: Yandex, Gmail, AWS SES) alarak doldurmalısınız.

.env
SMTP_HOST=smtp.gmail.com
SMTP_PORT=465
[email protected]
SMTP_PASS=eposta_sifreniz_veya_uygulama_sifresi
SMTP_SECURE=ssl
[email protected]
SMTP_FROM_NAME="ArtiFrame App"
Gmail Uyarısı: Eğer Gmail kullanıyorsanız, standart hesap şifrenizi kullanamazsınız. İki Adımlı Doğrulamayı açıp Uygulama Şifresi (App Password) oluşturmanız gerekir.
2. Temel E-posta Gönderimi

ArtiFrame Mailer sınıfı fluent (zincirleme) yapıya sahiptir. Bağlantı ayarlarını her defasında yazmanıza gerek kalmaz, doğrudan .env dosyasından çekilir.

example.php
<?php
use Src\Service\Mailer;

// Mailer'ı Başlat
$mailer = Mailer::create();

try {
    $isSent = $mailer
        ->to('[email protected]', 'Ahmet Yılmaz')  // Alıcı (İsim opsiyoneldir)
        ->subject('Siparişiniz Alındı')              // Mail Konusu
        ->html('<h1>Merhaba Ahmet!</h1><p>Siparişin hazırlanıyor...</p>') // HTML İçerik
        ->send(); // Gönder!

    echo "E-posta başarıyla gönderildi!";
} catch (Exception $e) {
    echo "E-posta gönderilemedi: " . $e->getMessage();
}
3. Gelişmiş Özellikler
CC ve BCC Ekleme

CC herkesin gördüğü kopya, BCC ise gizli kopya alıcıları içindir.

example.php
<?php
Mailer::create()
    ->to('[email protected]')
    ->cc('[email protected]')        // Görünür Kopya
    ->bcc('[email protected]')      // Gizli Kopya
    ->subject('Haftalık Rapor')
    ->html('Rapor ektedir.')
    ->send();
Dosya Ekleri (Attachments)

Sunucunuzda bulunan dosyaları zahmetsizce e-postaya ekleyebilirsiniz. Eklenen dosyanın adını e-postada farklı gösterebilirsiniz.

example.php
<?php
Mailer::create()
    ->to('[email protected]')
    ->subject('Aylık Faturanız')
    ->html('Lütfen ekteki faturanızı inceleyin.')
    // 1. Parametre: Dosyanın fiziksel yolu, 2. Parametre: E-postada görünecek ismi
    ->attach(__DIR__ . '/../../storage/invoices/INV-1001.pdf', 'Fatura_INV1001.pdf')
    ->attach(__DIR__ . '/../../storage/docs/sozlesme.docx') // İsim verilmezse dosya adını kullanır
    ->send();
İçeriğe Gömülü (Inline / Embedded) Görseller

E-postanın HTML içeriğinde logonuzu veya banner'ınızı <img src="..."> olarak gösterdiğinizde, bazen mail istemcileri güvenlik sebebiyle resmi engeller (Resimleri İndir uyarısı çıkar). Bunu önlemek için resmi e-postaya "gömersiniz" ve benzersiz bir kimlik (CID) ile HTML'den çağırırsınız.

example.php
<?php
$html = '
    <h2>Tebrikler!</h2>
    <p>Hesabınız doğrulandı.</p>
    <img src="cid:sirket_logosu" alt="Logomuz" style="width: 200px;">
';

Mailer::create()
    ->to('[email protected]')
    ->subject('Hesap Doğrulama')
    ->html($html)
    // 1. Parametre: Dosya yolu, 2. Parametre: CID (İçerikteki kimlik), 3. Parametre: Dosya ismi
    ->embedImage(__DIR__ . '/../../public/assets/img/logo.png', 'sirket_logosu', 'logo.png')
    ->send();