PHP mail() Fonksiyonunu Kullanarak E-posta Nasıl Gönderilir
⚡ Akıllı Özet
PHP mail fonksiyonu, sunucunun SMTP ayarlarını kullanarak doğrudan bir PHP betiğinden e-posta göndermeyi sağlayan yerleşik bir fonksiyondur. Bu kılavuz, mail() fonksiyonunun sözdizimini ve parametrelerini, php.ini dosyasında SMTP'yi yapılandırmayı, filter_var ile kullanıcı girdisini temizlemeyi, güvenli e-posta göndermeyi ve PHP kullanımını kapsamaktadır.MailGüvenilir teslimat için.

PHP mail nedir?
PHP mail, PHP komut dosyalarından e-posta göndermek için kullanılan yerleşik bir PHP fonksiyonudur.
Posta fonksiyonu aşağıdaki parametreleri kabul eder:
- E-posta
- Konu
- Mesajınız
- CC veya BCC e-posta adresleri
PHP mail'i neden ve ne zaman kullanmalısınız?
E-posta işlevi birçok durumda faydalıdır:
- Bu, kullanıcılara önemli olaylar hakkında bildirim göndermenin 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, sistem hatalarını e-posta yoluyla almak için bunu kullanabilirler.
- Bülten abonelerinize e-posta göndermek için kullanabilirsiniz.
- Bu özelliği, şifrelerini unutan kullanıcılara şifre sıfırlama bağlantıları göndermek için kullanabilirsiniz.
- Etkinleştirme ve onay bağlantılarını e-posta yoluyla göndermek için kullanabilirsiniz. Bu, kullanıcıları kaydederken ve e-posta adreslerini doğrularken faydalıdır.
PHP kullanarak posta gönderme
PHP mail fonksiyonunun temel sözdizimi 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 ve BCC gibi bilgileri eklemek için kullanılabilir.
- CC, "karbon kopya" anlamına gelen bir kısaltmadır. İlgili bir kişiye bir kopya göndermek istediğinizde kullanılır; örneğin, bir şirkete gönderilen şikayet e-postası, şikayet kuruluna da CC olarak gönderilebilir.
- BCC, "gizli karbon kopya" anlamına gelen bir kısaltmadır. CC'ye benzer, ancak BCC bölümüne eklenen e-posta adresleri diğer alıcılara gösterilmez.
Basit Mail Transmission Protokol (SMTP)
PHP mail, Simple'ı kullanır. Mail Transmission Posta göndermek için kullanılan protokol (SMTP).
Barındırılan bir sunucuda, SMTP ayarları zaten önceden yapılmış olacaktır.
SMTP posta ayarları, PHP kurulum klasöründeki "php.ini" dosyasından yapılandırılabilir.
Yerel sunucunuzda SMTP ayarlarını yapılandırmak için (XAMPP kullanıyorsanız), aşağıdaki adımları izleyin. Windows“C:\xampp\php” dizininde bulunan “php.ini” dosyasını bulun.
- Dosyayı Not Defteri veya herhangi bir metin düzenleyici kullanarak açın. Bu örnekte Not Defteri'ni kullanacağız. Düzenle menüsüne tıklayın.
- Bul… menüsüne tıklayın.
- Bul iletişim kutusu görünecektir.
- Sonrakini Bul düğmesine tıklayın
[Posta işlevi] altındaki girdileri bulun. Varsayılan satırlar genellikle şöyle görünür:
- ; SMTP = yerel ana bilgisayar
- ; smtp_port = 25
SMTP ve smtp_port'un önündeki noktalı virgülleri kaldırın ve SMTP'yi kendi portunuza ayarlayın. SMTP sunucusu ve SMTP portunuza yönlendiren portu belirtin. Ayarlarınız aşağıdaki gibi görünmelidir:
- SMTP = smtp.example.com
- smtp_port = 25
Not: SMTP ayarlarını web barındırma sağlayıcınızdan edinebilirsiniz. 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 ve yeniden başlatın. Apache sunucusu.
PHP Mail Örnek E-posta
Şimdi basit bir e-posta gönderme örneğine bakalım.
<?php $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; mail($to_email,$subject,$message,$headers); ?>
Çıktı:
Not: Yukarıdaki örnek yalnızca 4 zorunlu parametreyi dikkate almaktadır. Yukarıdaki kurgusal e-posta adresini gerçek bir e-posta adresiyle değiştirmeniz gerekmektedir.
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.
Diyelim ki, kullanıcıların bilgileri doldurup göndereceği bir iletişim formu oluşturmanız gerekiyor.
- Kullanıcılar, yanlışlıkla veya kasıtlı olarak başlıklara kod ekleyebilir ve bu da istenmeyen e-postaların gönderilmesine yol açabilir.
- 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.
Kullanıcı giriş verilerini doğrulamak ve temizlemek için filter_var yerleşik fonksiyonunu kullanan özel bir fonksiyon oluşturalım. filter_var fonksiyonu, kullanıcı giriş verilerini doğrulamak ve temizlemek 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.
- “SANITIZATION_TYPE”, sahada gerçekleştirilecek dezenfeksiyon türünü belirtir; örneğin:
- 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 geçersiz karakterleri kaldırır, böylece gereksiz karakterler içeren bir adres info@domain.com şekline indirgenir.
- FİLTRE_TEMİZLEME_URL – Yasadışı karakterleri kaldırır URLÖrneğin, https://www.example.com gibi temiz bir adres bırakarak.
- FILTER_SANITIZE_STRING – Dize değerlerinden etiketleri kaldırır, bu nedenle "am bold" ifadesi "am bold" olur. Bu filtre PHP 8.1'de kullanımdan kaldırılmıştır; bunun yerine htmlspecialchars() kullanın.
Aşağıdaki kod, güvenli e-posta göndermek için özel bir fonksiyon kullanmaktadı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@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; // check if the email address is invalid $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ı:
Güvenli Mail
E-postalar iletim sırasında istenmeyen alıcılar tarafından ele geçirilebilir.
Bu durum, e-postanın içeriğinin istenmeyen alıcılara ulaşmasına neden olabilir.
Güvenli e-posta bu sorunu şu şekilde çözüyor: transmitÖrneğin, 465 numaralı bağlantı noktasında SSL üzerinden SMTP veya 587 numaralı bağlantı noktasında STARTTLS kullanarak SSL veya TLS üzerinden şifrelenmiş bir bağlantı üzerinden e-posta göndermek.
Şifreleme, mesajı göndermeden önce karıştırır, böylece yalnızca hedeflenen alıcının posta sunucusu onu okuyabilir.
PHPMailer: mail() fonksiyonuna daha iyi bir alternatif
Gerçek uygulamalar için çoğu geliştirici PHP kullanır.MailER kütüphanesini kullanın, doğrudan mail() fonksiyonunu kullanmayın.MailER, harici bir SMTP sunucusuyla kimlik doğrulaması yaparak teslim edilebilirliği büyük ölçüde artırır ve ekleri ve HTML e-postaları basitleştirir.
Composer ile kurun, ardından aşağıda gösterildiği gibi kimlik doğrulamalı, şifrelenmiş bir SMTP bağlantısı üzerinden e-posta gönderin.
<?php use PHPMailer\PHPMailer\PHPMailer; require 'vendor/autoload.php'; $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('noreply@example.com', 'My App'); $mail->addAddress('name@example.com'); $mail->Subject = 'Testing PHPMailer'; $mail->Body = 'This email is sent using PHPMailer over SMTP'; $mail->send(); ?>
mail() fonksiyonuyla karşılaştırıldığında, PHPMailER, SMTP kimlik doğrulaması, yerleşik şifreleme, ek dosya desteği ve daha net hata yönetimi sağladığı için üretim e-postaları için önerilen seçenektir.






