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.

  • ???? mail() fonksiyonunun işlevi şunları yapar: `mail()` fonksiyonu, alıcıyı, konuyu, mesajı ve isteğe bağlı başlıkları alarak bir komut dosyasından e-posta gönderir.
  • 📨 SMTP İletimi: PHP mail, sunucu adı, bağlantı noktası ve kimlik doğrulama bilgileri php.ini yapılandırma dosyasında belirlenen SMTP'ye dayanır.
  • ???? CC ve BCC: İsteğe bağlı başlıklar, karbon kopya ve gizli karbon kopya alıcılarını ekler; BCC diğer alıcılardan gizlenir.
  • 🛡️ Girişi Temizle: FILTER_SANITIZE_EMAIL ve FILTER_VALIDATE_EMAIL ile birlikte kullanılan filter_var, iletişim formu girişinden başlık enjeksiyonunu engeller.
  • 🔒 Güvenli Mail: SSL veya TLS ile bağlantıyı şifrelemek, mesaj içeriklerinin iletim sırasında okunmasını engeller.
  • 🧰 PHP kullanınMailer: PHPMail`er` fonksiyonu, SMTP kimlik doğrulaması, ekler ve HTML e-posta ekleyerek, ham `mail()` fonksiyonuna göre daha güvenilir hale gelir.
  • 🤖 Yapay Zeka Yardımı: Yapay zeka araçları PHP'yi yapılandırabilir.MailSMTP ile ilgili sorunları giderir ve e-postalarınızın spam klasörüne düşmesini engelleyecek çözümler önerir.

PHP Mail

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.

Basit Mail Transmission Protokol

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

Basit Mail Transmission Protokol

  • Bul iletişim kutusu görünecektir.

Basit Mail Transmission Protokol

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

Basit Mail Transmission Protokol

[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ı:

Basit Mail Transmission Protokol

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ı:

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 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.

SSS

En yaygın neden, localhost'ta yapılandırılmış bir posta sunucusunun olmamasıdır. php.ini dosyasında doğru SMTP değerlerini ayarlayın veya PHP kullanın.MailDoğrulanmış bir SMTP hesabı ile bağlantı kurun. Ayrıca sunucu hata günlüğünü ve spam klasörünüzü de kontrol edin.

MIME-Version'ı 1.0 ve Content-Type'ı text/html olarak ayarlayan başlıklar ekleyin, ardından HTML işaretlemesini mesaj gövdesine yerleştirin. PHPMailer, isHTML(true) seçeneğini ayarladığınızda bunu otomatik olarak halleder.

FILTER_SANITIZE_STRING, PHP 8.1'den beri kullanımdan kaldırılmıştır. Görüntüleme için çıktıyı kaçırmak üzere htmlspecialchars() işlevini veya değeri temizliyor veya kontrol ediyor olmanıza bağlı olarak FILTER_VALIDATE_EMAIL gibi belirli bir doğrulayıcıyı kullanın.

Evet. Yapay zekaya SMTP sunucunuzu, port numaranızı ve güvenlik türünüzü verin, o da tam PHP kodunu oluşturabilir.MailKimlik doğrulama, gönderici, alıcılar ve hata işleme içeren bir kurulum. Kimlik bilgilerini kodda değil, ortam değişkenlerinde saklayın.

Evet. Yapay zeka, doğrulanmış bir SMTP gönderici kullanarak, spam tetikleyici kelimelerden kaçınarak ve geçerli bir Gönderen adresi belirleyerek SPF, DKIM ve DMARC kayıtları konusunda size tavsiyelerde bulunabilir ve ardından teslim edilebilirliği test etmenize yardımcı olabilir.

Bu yazıyı şu şekilde özetleyin: