# PHPMailer Nedir? Nasıl Kullanılır?

PHP ile bir web sitesi veya uygulama geliştiren herkes, er ya da geç e-posta göndermesi gereken bir durumla karşılaşır: iletişim formu, üyelik onayı, şifre sıfırlama, sipariş bildirimi... PHP'nin yerleşik mail() fonksiyonu bu iş için yetersiz ve sorunludur. İşte burada PHPMailer devreye girer — PHP dünyasının en güvenilir ve en yaygın e-posta gönderme kütüphanesi.

Bu rehberde PHPMailer nedir, ne işe yarar, neden gereklidir, nasıl kurulur, Composer ile nasıl yüklenir, SMTP ile nasıl yapılandırılır ve çalışan örnek kodlarla nasıl kullanılır sorularının hepsine güncel ve teknik cevaplar vereceğiz.

PHPMailer Nedir?

PHPMailer, PHP ile e-posta göndermeyi kolaylaştıran, ücretsiz ve açık kaynaklı bir e-posta kütüphanesidir. Dünyanın en popüler PHP e-posta kütüphanesi olarak kabul edilir; 105 milyondan fazla kurulum ve GitHub'da 22 binden fazla yıldız ile devasa bir kullanıcı tabanına sahiptir.

Netlen Platinum Sunucu Kampanyası

WordPress, Drupal, Joomla gibi büyük platformlar ve sayısız PHP framework'ü, e-posta gönderimi için arka planda PHPMailer kullanır. Yani farkında olmadan zaten PHPMailer'ın gönderdiği e-postaları her gün alıyor olabilirsiniz.

PHPMailer ile şunları yapabilirsiniz:

  • SMTP üzerinden güvenli e-posta gönderme
  • HTML formatında zengin e-postalar
  • Dosya ekleri (attachment)
  • Gömülü görseller (inline images)
  • CC, BCC, Reply-To
  • Çoklu alıcı
  • DKIM imzalama
  • OAuth2 kimlik doğrulama (Gmail, Microsoft, Yahoo)

PHPMailer Neden Gereklidir?

PHPMailer neden gereklidir sorusunun cevabı, PHP'nin yerleşik mail() fonksiyonunun sorunlarında gizlidir.

PHP mail() Fonksiyonunun Sorunları

PHP'nin kendi mail() fonksiyonu vardır, ancak ciddi sınırlamaları bulunur:

  • SMTP kimlik doğrulama yok: Güvenli sunucu üzerinden gönderim yapamaz
  • Spam'e düşme riski yüksek: Genellikle spam filtrelerine takılır
  • HTML ve ek desteği zayıf: Karmaşık e-postalar zordur
  • Hata yönetimi yetersiz: Neyin yanlış gittiğini anlamak zor
  • Şifreleme desteği yok: TLS/SSL ile güvenli gönderim yapamaz

PHPMailer'ın Avantajları

PHPMailer bu sorunların hepsini çözer:

  • SMTP authentication: Kullanıcı adı/şifre ile güvenli gönderim
  • TLS/SSL şifreleme: Güvenli bağlantı
  • Yüksek teslim oranı: Doğru yapılandırmayla spam'e düşmez
  • HTML e-posta: Zengin içerik kolayca
  • Dosya ekleri: Basit API ile attachment
  • Detaylı hata yönetimi: Sorunları kolayca teşhis etme
  • OAuth2 desteği: Modern kimlik doğrulama

PHPMailer Ücretsiz mi?

PHPMailer ücretsiz mi (Is PHPMailer free) sorusunun cevabı: Evet, PHPMailer tamamen ücretsizdir. LGPL-2.1 lisansı altında dağıtılır; ticari projelerde bile özgürce kullanabilirsiniz. Açık kaynaklıdır ve GitHub üzerinde aktif olarak geliştirilir.

PHP için En İyi Mailer Hangisi?

PHP için en iyi mailer hangisi (What is the best mailer for PHP) sorusu sık sorulur. PHP e-posta kütüphaneleri arasında başlıca seçenekler:

  • PHPMailer: En popüler, en yaygın, en çok dokümante edilmiş
  • Symfony Mailer: Modern, Symfony framework'ü için ideal
  • SwiftMailer: Eskiden popülerdi, artık kullanımdan kalktı (Symfony Mailer'a devredildi)
  • PHP mail() : Yerleşik ama yetersiz

Çoğu proje için PHPMailer en güvenli ve en pratik seçimdir — geniş topluluk desteği, bol dokümantasyon ve kanıtlanmış güvenilirliği nedeniyle. Symfony tabanlı projeler için Symfony Mailer tercih edilebilir.

PHPMailer Nasıl Kurulur?

PHPMailer nasıl kurulur (How to install PHPMailer) sorusunun iki temel yöntemi vardır: Composer (önerilen) ve manuel kurulum.

Yöntem 1: Composer ile Kurulum (Önerilen)

PHPMailer Composer ile kurulum, modern PHP projelerinde standart yöntemdir. Composer kuruluysa, proje dizininizde şu komutu çalıştırın:

bash
composer require phpmailer/phpmailer

Bu komut, PHPMailer'ın en güncel sürümünü (2026 itibarıyla 7.x serisi) indirir ve vendor/ klasörüne yerleştirir. Composer otomatik yükleyici (autoloader) sayesinde sınıflar otomatik olarak kullanılabilir hale gelir.

Yöntem 2: Manuel Kurulum (Composer'sız)

Composer kullanmıyorsanız, PHPMailer download (PHPMailer indirme) yöntemiyle manuel kurabilirsiniz:

  1. PHPMailer'ın GitHub sayfasından (github.com/PHPMailer/PHPMailer) ZIP dosyasını indirin
  2. ZIP'i açıp src/ klasöründeki dosyaları projenize kopyalayın
  3. Gerekli dosyaları manuel olarak dahil edin:
php
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';

Önemli güncelleme: Eski PHPMailer sürümlerinde kullanılan PHPMailerAutoload.php dosyası artık yoktur. Modern PHPMailer (6.x ve 7.x), Composer autoloader'ı veya yukarıdaki manuel require yöntemini kullanır. Eğer eski bir öğreticide PHPMailerAutoload.php görürseniz, o içerik güncel değildir.

PHPMailer Kullanımı: Temel SMTP Örneği

PHPMailer kullanımı ve PHPMailer örnek kodu için temel bir SMTP gönderim örneği. Bu, en yaygın kullanım senaryosudur:

php
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

// Composer autoloader
require 'vendor/autoload.php';

// true parametresi exception'ları etkinleştirir
$mail = new PHPMailer(true);

try {
    // Sunucu ayarları
    $mail->isSMTP();                                      // SMTP kullan
    $mail->Host       = 'mail.siteniz.com';               // SMTP sunucu adresi
    $mail->SMTPAuth   = true;                             // SMTP kimlik doğrulama
    $mail->Username   = 'info@siteniz.com';               // SMTP kullanıcı adı
    $mail->Password   = 'eposta_sifreniz';                // SMTP şifresi
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;   // TLS şifreleme
    $mail->Port       = 587;                              // Port (SSL için 465)
    $mail->CharSet    = 'UTF-8';                          // Türkçe karakter desteği

    // Gönderen ve alıcılar
    $mail->setFrom('info@siteniz.com', 'Firma Adı');
    $mail->addAddress('alici@example.com', 'Alıcı Adı');
    $mail->addReplyTo('info@siteniz.com', 'Bilgi');

    // İçerik
    $mail->isHTML(true);                                  // HTML formatı
    $mail->Subject = 'Test E-postası';
    $mail->Body    = '<h1>Merhaba!</h1><p>Bu bir test e-postasıdır.</p>';
    $mail->AltBody = 'Merhaba! Bu bir test e-postasıdır.';  // HTML desteklemeyen istemciler için

    $mail->send();
    echo 'E-posta başarıyla gönderildi';
} catch (Exception $e) {
    echo "E-posta gönderilemedi. Hata: {$mail->ErrorInfo}";
}

Bu kod, kurumsal e-posta hesabınız üzerinden güvenli (TLS şifreli) bir HTML e-posta gönderir. Türkçe karakterler için CharSet = 'UTF-8' satırı önemlidir.

PHPMailer Gmail ile Kullanım

PHPMailer Gmail üzerinden e-posta göndermek isteyenler için özel bir yapılandırma gerekir. Gmail, güvenlik nedeniyle artık normal hesap şifresiyle SMTP erişimine izin vermez; uygulama şifresi (app password) gerekir.

Gmail için Adımlar

  1. Google Hesabınızda 2 Adımlı Doğrulamayı (2FA) etkinleştirin
  2. Google Hesap ayarlarından bir "Uygulama Şifresi" (App Password) oluşturun
  3. Bu uygulama şifresini PHPMailer'da kullanın
php
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    $mail->isSMTP();
    $mail->Host       = 'smtp.gmail.com';
    $mail->SMTPAuth   = true;
    $mail->Username   = 'hesabiniz@gmail.com';
    $mail->Password   = 'uygulama_sifresi';   // Normal şifre DEĞİL, app password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;
    $mail->CharSet    = 'UTF-8';

    $mail->setFrom('hesabiniz@gmail.com', 'Adınız');
    $mail->addAddress('alici@example.com');

    $mail->isHTML(true);
    $mail->Subject = 'Gmail Test';
    $mail->Body    = 'Gmail üzerinden gönderilen test e-postası.';

    $mail->send();
    echo 'Gönderildi';
} catch (Exception $e) {
    echo "Hata: {$mail->ErrorInfo}";
}

Not: Gmail'in günlük gönderim limitleri vardır (normal hesap için günde ~500 e-posta). Yüksek hacimli gönderim için Gmail uygun değildir; kurumsal e-posta veya profesyonel servis kullanın.

Dosya Eki (Attachment) Ekleme

PHPMailer ile e-postaya dosya eklemek çok kolaydır:

php
// Tek dosya ekle
$mail->addAttachment('/dosya/yolu/rapor.pdf', 'Rapor.pdf');

// Birden fazla dosya
$mail->addAttachment('/dosya/yolu/fatura.pdf');
$mail->addAttachment('/dosya/yolu/resim.jpg', 'Fotograf.jpg');

Birden Fazla Alıcıya Gönderme

php
// Birden fazla alıcı
$mail->addAddress('alici1@example.com', 'Alıcı 1');
$mail->addAddress('alici2@example.com', 'Alıcı 2');

// CC (bilgi)
$mail->addCC('cc@example.com');

// BCC (gizli)
$mail->addBCC('bcc@example.com');

PHPMailer Debug: Hata Ayıklama

PHPMailer debug özelliği, e-posta gönderiminde sorun yaşadığınızda neyin yanlış gittiğini görmenizi sağlar. SMTP hata ayıklama çıktısını etkinleştirmek için:

php
$mail->SMTPDebug = SMTP::DEBUG_SERVER;  // Detaylı sunucu iletişimini göster

Debug seviyeleri:

  • SMTP::DEBUG_OFF (0): Kapalı (üretim ortamı için)
  • SMTP::DEBUG_CLIENT (1): İstemci mesajları
  • SMTP::DEBUG_SERVER (2): Sunucu + istemci mesajları (en kullanışlı)
  • SMTP::DEBUG_CONNECTION (3): Bağlantı detayları
  • SMTP::DEBUG_LOWLEVEL (4): En düşük seviye detay

Üretim uyarısı: Canlı sitede SMTPDebug mutlaka kapalı (DEBUG_OFF) olmalıdır. Açık bırakılırsa hata mesajları ziyaretçilere görünür ve güvenlik riski oluşturur.

Yaygın PHPMailer Hataları ve Çözümleri

"SMTP connect() failed"

En yaygın hata. Nedenleri:

  • Yanlış SMTP host veya port
  • Firewall SMTP portunu (587/465) engelliyor
  • Sunucu SMTP bağlantısına izin vermiyor
  • Yanlış şifreleme ayarı (STARTTLS vs SMTPS)

Çözüm: Host, port ve şifreleme ayarlarını kontrol edin. Port 587 için ENCRYPTION_STARTTLS, port 465 için ENCRYPTION_SMTPS kullanın.

"SMTP Error: Could not authenticate"

Kullanıcı adı/şifre yanlış veya kimlik doğrulama sorunu.

Çözüm: Kullanıcı adı (tam e-posta adresi) ve şifreyi kontrol edin. Gmail için uygulama şifresi kullandığınızdan emin olun.

Türkçe Karakter Sorunu

E-postada Türkçe karakterler bozuk görünüyorsa:

Çözüm: $mail->CharSet = 'UTF-8'; satırını ekleyin.

E-postalar Spam'e Düşüyor

Çözüm: Sunucunuzun SPF, DKIM, DMARC kayıtlarını doğru yapılandırın. Gönderen adresinin alan adıyla eşleştiğinden emin olun.

PHPMailer ve Hosting İlişkisi

PHPMailer bir PHP kütüphanesidir ve çalışmak için bir PHP destekli hosting ortamına ihtiyaç duyar. E-postaların başarıyla gönderilmesi ve spam'e düşmemesi için hosting altyapısı kritik öneme sahiptir:

  • PHP desteği: PHPMailer modern PHP sürümlerinde (7.x, 8.x) çalışır
  • SMTP erişimi: Sunucunun SMTP portlarına (587, 465) izin vermesi gerekir
  • SPF, DKIM, DMARC: E-posta teslim oranı için bu kayıtlar doğru olmalı
  • Kurumsal e-posta hesabı: Profesyonel bir gönderen adresi (info@firmaniz.com)
  • IP itibarı: Sunucu IP'sinin temiz (kara listede olmayan) olması

Netlen olarak web hosting, VPS ve dedicated server hizmetlerimizle PHPMailer ve PHP projeleriniz için ideal altyapıyı sunuyoruz:

  • Güncel PHP sürümleri (7.4 - 8.4) ile PHPMailer'ın tüm özelliklerini kullanma
  • SMTP erişimi ile PHPMailer üzerinden sorunsuz e-posta gönderimi
  • Kurumsal e-posta hesapları (info@firmaniz.com.tr) ile profesyonel gönderen kimliği
  • SPF, DKIM, DMARC kayıtlarının kolay kurulumu ile yüksek teslim oranı
  • NVMe SSD altyapısı ile hızlı uygulama performansı
  • Composer desteği (VPS/dedicated) ile modern PHP geliştirme
  • cPanel ile kolay e-posta ve PHP yönetimi
  • 7/24 teknik destek ile e-posta gönderim sorunlarında uzman yardımı

PHPMailer kodunuzu yazdınız; o kodun e-postaları başarıyla, spam'e düşmeden teslim etmesi için doğru yapılandırılmış bir hosting altyapısı tamamlayıcı unsurdur.

Sıkça Sorulan Sorular (SSS)

PHPMailer ne için kullanılır?

PHPMailer, PHP uygulamalarından e-posta göndermek için kullanılır: iletişim formları, üyelik onayları, şifre sıfırlama, sipariş bildirimleri, bültenler ve daha fazlası. PHP'nin yetersiz mail() fonksiyonunun yerini alır.

PHPMailer ücretsiz mi?

Evet, PHPMailer LGPL-2.1 lisansı altında tamamen ücretsizdir ve ticari projelerde bile özgürce kullanılabilir.

PHPMailer'ı nasıl kurarım?

En kolay yöntem Composer'dır: composer require phpmailer/phpmailer. Composer kullanmıyorsanız GitHub'dan ZIP indirip src/ dosyalarını manuel dahil edebilirsiniz.

PHPMailer hangi PHP sürümünü gerektirir?

Güncel PHPMailer (7.x) PHP 5.5 ve üzerini destekler, ancak modern PHP sürümlerinde (8.x) kullanmak en iyisidir. Eski PHP 5.2 desteği yıllar önce sonlandırıldı.

Gmail ile PHPMailer kullanırken neden normal şifrem çalışmıyor?

Google güvenlik nedeniyle normal hesap şifresiyle SMTP erişimini engeller. 2FA etkinleştirip bir "uygulama şifresi" (app password) oluşturmanız ve onu kullanmanız gerekir.

PHPMailer ile toplu e-posta gönderebilir miyim?

Teknik olarak evet, ancak büyük hacimli toplu gönderim için PHPMailer ideal değildir. Hosting limitlerine takılır ve IP itibarı riski oluşur. Toplu pazarlama için Mailchimp, Brevo gibi profesyonel servisler kullanın.

"SMTP connect() failed" hatası neden olur?

Genellikle yanlış SMTP host/port, firewall engeli veya yanlış şifreleme ayarı nedeniyle. Port 587 için STARTTLS, port 465 için SMTPS kullandığınızdan emin olun.

PHPMailerAutoload.php dosyasını bulamıyorum, neden?

Bu dosya modern PHPMailer sürümlerinde (6.x ve 7.x) kaldırıldı. Artık Composer autoloader veya src/ klasöründeki dosyaları manuel require ile dahil edilir. Eski öğreticiler güncel değildir.

PHPMailer e-postaları neden spam'e düşüyor?

Genellikle SPF, DKIM, DMARC kayıtları eksik veya hatalı olduğu için. Gönderen adresinin sunucunuzun alan adıyla eşleşmesi ve sunucu IP'nizin temiz olması da önemlidir. Hosting sağlayıcınızdan bu kayıtları doğru yapılandırmasını isteyin.

Symfony Mailer mı PHPMailer mı kullanmalıyım?

Symfony tabanlı bir projedeyseniz Symfony Mailer doğal seçimdir. Bağımsız PHP projeleri veya WordPress gibi platformlar için PHPMailer daha yaygın ve pratiktir. İkisi de güçlüdür; projenize göre seçin.


PHPMailer, PHP ile e-posta göndermenin endüstri standardı çözümüdür. PHP'nin yetersiz mail() fonksiyonunun aksine, güvenli SMTP gönderimi, HTML içerik, dosya ekleri ve detaylı hata yönetimi sunar. Composer ile kurulumu birkaç saniye sürer ve çalışan örnek kodlarla hızlıca entegre edilir. Kodunuzun e-postaları başarıyla teslim etmesi için ise doğru PHP sürümü, SMTP erişimi ve düzgün yapılandırılmış e-posta kayıtları (SPF/DKIM/DMARC) sunan kaliteli bir hosting altyapısı şarttır.

PHPMailer ve PHP projeleriniz için optimize edilmiş web hosting, VPS ve dedicated server çözümleri için Netlen.com.tr'yi ziyaret edebilirsiniz.

Netlen'i Google'da Takip Edin

En güncel rehberlerimize, duyurularımıza ve teknik içeriklerimize Google üzerinden öncelikli ulaşmak için Netlen'i tercih ettiğiniz kaynaklar arasına ekleyin.

GoogleGoogle'da Tercih edilenkaynak olarak ekleyin
PHPMailer nedir
PHPMailer kullanımı
PHPMailer nasıl kurulur
PHPMailer örnek
PHPMailer composer
PHPMailer SMTP
PHPMailer Gmail
PHPMailer download
PHPMailer debug
PHPMailer tutorial
PHP mail gönderme
PHP e-posta
PHPMailer kurulum
SMTP authentication
PHPMailer örnek kod
PHP iletişim formu
PHPMailer ücretsiz mi
PHPMailer attachment
SPF DKIM DMARC
PHP mailer

Bu yazıyı paylaşın

Ahmet Yılmaz

Yazar Hakkında

Ahmet Yılmaz

Sistem Mühendisi

Sistem mühendisi olarak Linux sunucu yönetimi, ağ güvenliği ve bulut altyapı optimizasyonu konularında uzmanlaşmış deneyimli bir profesyonelim.

Yorumlar

Bu yazı hakkında okuyucu yorumları