PHP mail() Fonksiyonunu Kullanarak E-posta Nasıl Gönderilir

PHP mail nedir?

PHP mail, PHP betiklerinden e-posta göndermek için kullanılan yerleşik PHP fonksiyonudur.

Posta fonksiyonu aşağıdaki parametreleri kabul eder:

  • E-posta
  • Konu
  • Mesaj
  • CC veya BC e-posta adresleri

  • Kullanıcıları önemli olaylar hakkında bilgilendirmenin uygun maliyetli bir yoludur.
  • Sağlanan içeriği e-postayla gönderen web sitesinde bir bizimle iletişime geçin formu sağlayarak kullanıcıların sizinle e-posta yoluyla iletişim kurmasını sağlayın.
  • Geliştiriciler bunu e-posta yoluyla sistem hatalarını almak için kullanabilirler
  • Bülten abonelerinize e-posta göndermek için kullanabilirsiniz.
  • Şifrelerini unutan kullanıcılara şifre sıfırlama bağlantıları göndermek için kullanabilirsiniz.
  • Etkinleştirme/onaylama bağlantılarını e-postayla göndermek için kullanabilirsiniz. Bu, kullanıcıları kaydederken ve e-posta adreslerini doğrularken faydalıdır

Neden/Ne zaman PHP postası kullanılmalıdır?

PHP kullanarak posta gönderme

PHP mail fonksiyonunun temel söz dizimi aşağıdaki gibidir

<?php
mail($to_email_address,$subject,$message,[$headers],[$parameters]);
?>

İŞTE,

  • “$to_email_address”, e-posta alıcısının e-posta adresidir
  • "$subject" e-postanın konusudur
  • “$message” gönderilecek mesajdır.
  • “[$headers]” isteğe bağlıdır, CC, BCC gibi bilgileri eklemek için kullanılabilir

    • CC, karbon kopyanın kısaltmasıdır. İlgili bir kişiye bir kopya göndermek istediğinizde kullanılır, yani bir şirkete gönderilen bir şikayet e-postası aynı zamanda şikayet panosuna CC olarak da gönderilebilir.
    • BCC, kör karbon kopyasının kısaltmasıdır. CC'ye benzer. BCC bölümünde yer alan e-posta adresleri diğer alıcılara gösterilmeyecektir.

Basit Mail Transmission Protokol (SMTP)

PHP mailer Simple'ı kullanır Mail Transmission Posta göndermek için kullanılan protokol (SMTP).

Barındırılan bir sunucuda SMTP ayarları zaten ayarlanmış olmalıdır.

SMTP mail ayarları PHP kurulum klasöründeki “php.ini” dosyasından yapılandırılabilir.

Localhost'unuzda SMTP ayarlarını yapılandırma Windows'ta xampp kullandığınızı varsayarak, “C:\xampp\php” dizininde “php.ini” dosyasını bulun.

  • Not defterini veya herhangi bir metin düzenleyiciyi kullanarak açın. Bu örnekte not defterini kullanacağız. Düzenleme menüsüne tıklayın

Basit Mail Transmission Protokol

  • Bul… menüsüne tıklayın

Basit Mail Transmission Protokol

  • Bul iletişim menüsü görünecektir

Basit Mail Transmission Protokol

  • Sonrakini Bul düğmesine tıklayın

Basit Mail Transmission Protokol

  • Girişleri bulun

    • [posta işlevi]
    • ; XAMPP: Aşağıdaki gibi bir SMTP Sunucusu ile çalışmak istiyorsanız yarım sütunu kaldırmayın. Mercury
    • ; SMTP = yerel ana bilgisayar
    • ; smtp_port = 25
    • SMTP ve smtp_port'tan önceki noktalı virgülleri kaldırın ve SMTP'yi kendinize göre ayarlayın. SMTP sunucusu ve smtp bağlantı noktanıza giden bağlantı noktası. Ayarlarınız aşağıdaki gibi görünmeli

      • SMTP = smtp.example.com
      • smtp_port = 25
      • not SMTP ayarlarını web barındırma sağlayıcılarınızdan alabilirsiniz.
      • Eğer sunucu kimlik doğrulaması gerektiriyorsa aşağıdaki satırları ekleyin.

        • auth_username = example_username@example.com
        • auth_password = örnek_şifre
        • Yeni değişiklikleri kaydedin.
        • Yeniden Apache sunucusu.

PHP Mail Örnek E-posta

Şimdi basit bir mail gönderen bir örneğe bakalım.

<?php     
$to_email = 'name @ company . com';
$subject = 'Testing PHP Mail';
$message = 'This mail is sent using the PHP mail function';
$headers = 'From: noreply @ company . com';
mail($to_email,$subject,$message,$headers);
?>

Çıktı:

Basit Mail Transmission Protokol

Not: yukarıdaki örnek yalnızca 4 zorunlu parametreyi alır.

Yukarıdaki hayali e-posta adresini gerçek bir e-posta adresiyle değiştirmelisiniz.

E-posta kullanıcı girdilerinin temizlenmesi

Yukarıdaki örnekte, basitlik adına e-posta adresi ve diğer ayrıntılar için kaynak kodunda sabit kodlanmış değerler kullanılmıştır.

Kullanıcıların bilgilerini doldurup göndermeleri için bir iletişim formu oluşturmanız gerektiğini varsayalım.

  • Kullanıcılar yanlışlıkla veya bilerek başlıklara kod enjekte edebilir ve bu da spam e-posta gönderilmesine neden olabilir
  • Sisteminizi bu tür saldırılardan korumak için, e-posta gönderilmeden önce değerleri temizleyen ve doğrulayan özel bir işlev oluşturabilirsiniz.

filter_var yerleşik fonksiyonunu kullanarak e-posta adresini doğrulayan ve temizleyen özel bir fonksiyon oluşturalım.

Filter_var işlevi Filter_var işlevi, kullanıcı giriş verilerini temizlemek ve doğrulamak için kullanılır.

Aşağıdaki temel söz dizimine sahiptir.

<?php
filter_var($field, SANITIZATION TYPE);
?>

İŞTE,

  • “filter_var(…)” doğrulama ve temizleme işlevidir
  • “$field” filtrelenecek alanın değeridir.
  • “SANİTİZASYON TİPİ” sahada yapılacak olan;

    • FİLTRE_DOĞRULA_E-POSTA – geçerli e-posta adresleri için true, geçersiz e-posta adresleri için false değerini döndürür.
    • FİLTRE_TEMİZLE_E-POSTA – e-posta adreslerinden yasadışı karakterleri kaldırır. info\@domain.(com) info@domain.com'u döndürür.
    • FILTER_SANITIZE_URL – URL'lerdeki yasa dışı karakterleri kaldırır. http://www.example@.comé şunu döndürür: >http://www.example@.com
    • FILTER_SANITIZE_STRING – etiketleri dize değerlerinden kaldırır. Cesurum cesurum olur.

Aşağıdaki kod güvenli e-posta göndermek için özel bir fonksiyon kullanır.

<?php 
function sanitize_my_email($field) {
    $field = filter_var($field, FILTER_SANITIZE_EMAIL);
    if (filter_var($field, FILTER_VALIDATE_EMAIL)) {
        return true;
    } else {
        return false;
    }
}
$to_email = 'name @ company . com';
$subject = 'Testing PHP Mail';
$message = 'This mail is sent using the PHP mail ';
$headers = 'From: noreply @ company. com';
//check if the email address is invalid $secure_check
$secure_check = sanitize_my_email($to_email);
if ($secure_check == false) {
    echo "Invalid input";
} else { //send email 
    mail($to_email, $subject, $message, $headers);
    echo "This email is sent using PHP Mail";
}
?>

Çıktı:

E-posta kullanıcı girdilerinin temizlenmesi

Güvenli Mail

E-postalar iletim sırasında istenmeyen alıcılar tarafından ele geçirilebilir.

Bu, e-postanın içeriğinin istenmeyen alıcılara ulaşmasına neden olabilir.

Güvenli posta, e-postaları Hypertext Transfer Protocol Secure (HTTPS) üzerinden ileterek bu sorunu çözer.

HTTPS, mesajları göndermeden önce şifreler.

ÖZET

  • The PHP yerleşik mail() fonksiyonu PHP betiklerinden e-posta göndermek için kullanılır
  • Güvenli e-posta göndermek için veriler üzerinde doğrulama ve temizleme kontrolleri önemlidir
  • PHP'nin yerleşik filter_var() işlevi, veri temizleme ve doğrulamayı gerçekleştirmenin kullanımı kolay ve etkili bir yolunu sağlar