Çoğu işletme web sitesinde kullanıcıların iletişime geçmeleri için iletişim formu kullanır. Bunun yanında e-ticaret sitelerinde olduğu gibi sipariş bilgilendirmelerini e-posta ile iletmek isterler. Web sitenizi PHP yazılım dile ile hazırladıysanız PHP mail gönderme yaparak iletişim formu içeriklerini e-posta olarak alabilirsiniz. E-ticaret sitesinde sipariş bilgilendirmelerini müşterilere e-posta ile ulaştırabilirsiniz.

PHP mail gönderme işleminin iki yolu vardır:

  1. PHP mail() işlevini kullanmak
  2. PHPMailer benzeri bir kütüphane kullanmak

PHP mail nedir?

PHP içerisinde e-posta göndermeye yardımcı olan yerleşik olarak var bir PHP kütüphanesidir. PHP 4, PHP 5, PHP 7, PHP 8 versiyonlarında çalışır. Temel olarak gönderici e-posta adresi, konu başlığı, mesaj parametrelerinin belirlenmesi yeterlidir.

mail(
    string $to,
    string $subject,
    string $message,
)

Bazı sağlayıcılarda mail() fonksiyonu kapalı olabilir. Web sitesinin barındığı sunucuda mail() fonksiyonunun aktif olup olmadığını kontrol etmek için aşağıdaki kodu kullanabilirsiniz. Eğer aktif değilse alternatif olarak PHPMailer kütüphanesini tercih edebilirsiniz.

<?php
if ( function_exists( 'mail' ) )
{
    echo 'mail() fonksiyonu aktif';
}
else
{
    echo 'mail() fonksiyonu devre dışı';
}
?>

PHPMailer vs mail()

Mail() fonksiyonu, basit e-postalar gönderebilen ve sadece gönderici, konu ve mesaj parametrelerine ihtiyacı olan, ek olarak e-posta sağlayıcısına ihtiyacı olmayan bir PHP işlevidir. Kod tarafında sade bir yapısı olması, tüm PHP sürümleriyle çalışabiliyor olması nedeniyle avantajlıdır. SMTP ile kullanımının zor olması, toplu mail gönderimine uygun olmaması, gönderilen maillerin SPAM filtrelerine takılma oranının yüksek olması, istek dışı posta göndermeye açık olması sebebiyle dezavantajlıdır.

PHPMailer kütüphanesi mail() fonksiyonunu SMTP kimlik doğrulama ile birleştirip e-posta gönderimini sağlar. HMTL, ekli dosya gibi tüm e-posta gönderme özelliklerini desteklemesi, SSL ve TLS sertifika kullanabilmesi, aynı anda birden fazla e-posta gönderebilmesi açısından avantajlıdır. Ek bir e-posta adresi SMTP kurulum bilgilerine ihtiyaç duyması, SMTP sunucu kaynaklı sorunlarda e-posta gönderilememesi, kod tarafında ihtiyaç duyduğu parametre sayısının fazla olması açısında dezavantajlıdır.

PHPMailer kütüphanesi ile e-posta gönderme

Öncelikle PHPMailer kütüphanesi aşağıdaki linkten indirilir. Burada tüm detaylar yer almaktadır.

https://github.com/PHPMailer/PHPMailer

Eğer web siteniz hosting.com.tr firmasında barınıyorsa FTP erişim bilgilerini öğrenmek için hazırladığımız dokümana tıklayabilirsiniz. FileZilla ile dosyaları hosting alanına yüklemek için bu dokümanı inceleyebilirsiniz.

Kod tarafında e-posta gönderme ayarları için aşağıdaki kod satırlarını kullanabilirsiniz.

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

require 'src/Exception.php'; //Exception.php dosya yolu
require 'src/PHPMailer.php'; //PHPMailer.php dosya yolu
require 'src/SMTP.php'; //SMTP.php dosya yolu

$mail = new PHPMailer(true);
try {
 //Server settings
 $mail->CharSet = 'UTF-8';
 $mail->SMTPDebug = 0; // 0: debug kapalı, 1: debug açık
 $mail->isSMTP(); 
 $mail->Host = 'mail.domain.uzantı'; // SMTP sunucu adı
 $mail->SMTPAuth = true; // SMTP Doğrulama
 $mail->Username = '[email protected]ı'; // SMTP kullanıcı adı
 $mail->Password = 'Şifre'; // SMTP kullanıcısının şifresi
 $mail->SMTPSecure = 'tls'; // Şifreleme
 $mail->Port = 587; // SMTP Port
 $mail->setfrom('[email protected]ı', 'İletişim Formu'); // Gönderen adresi
 $mail->addAddress($_POST['mail']);
 $mail->addReplyTo($_POST['mail'], $_POST['name']);
 $mail->isHTML(true);
 $mail->Subject = 'İletişim Formu.';
 $mail->Body = $_POST['message'];
//Üçüncü taraf SMTP sunucusu ile barındırma sunucusu entegrasyonu için gerekebilir
$mail->SMTPOptions = array( 
'ssl' => array( 
'verify_peer' => false, 
'verify_peer_name' => false, 
'allow_self_signed' => true 
) 
);


 $mail->send();
 echo "Mesajınız için teşekkürler --> ".$_POST['mail']."<br>";
} catch (Exception $e) {
 echo 'Mesajınız iletilemedi. Hata: ', $mail->ErrorInfo;
}
?>

Hosting paketiniz hosting.com.tr firmasında ise SMTP bilgileri için aşağıdaki bilgileri alternatifli olarak kullanabilirsiniz.

$mail->Host = 'mail.domain.uzantı';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

$mail->Host = 'mail.domain.uzantı';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;

E-posta gönderimlerinde hataları incelemek için SMTPDebug değerini sırayla  “1” ve “2” yaparak kontrol edebilirsiniz.

Siteniz WordPress ile hazırlanmışsa eklentiler ile gerekli ayarları yapabilirsiniz. Bu konuda hazırladığımız dokümanları inceleyebilirsiniz.


İlgili İçerikler:

WordPress Mail Sorunu

WordPress SMTP Mail Ayarları Nedir?

WordPress WPForms Send E-mail


PHP Mail() İşlevini Kullanarak E-posta Gönderme

PHP mail() fonksiyonun çalışması için PHP Sendmail hizmeti etkin olmalıdır. Genellikle sendmail hizmeti etkindir, yine de kontrol etmek için phpinfo sayfasındaki sendmail_path satırını kontrol edebilirsiniz. “/usr/sbin/sendmail” yazıyorsa etkindir.

Aşağıdaki gibi bir kod ile PHP mail gönderme yapabilirsiniz.

<?php
   $from = "[email protected]ı";
   $to = "[email protected]ı"; //iletişim formunu dolduran e-posta adresine göndermek için e-posta adresini formdan almasını sağlayabilirsiniz. 
   $subject = "E-posta gönderiliyor";
   $message = "Merhaba";
  if(mail($to,$subject,$message, $headers)) {
      echo "e-posta gönderildi";
   } else {
      echo "e-posta gönderilemedi";
   }
?>

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir