PHP’de Raw Email
Nasıl Ayrıştırılır: Kapsamlı Bir Kılavuz
Raw e-postayı ayrıştırmak oldukça zorlayıcı olabilir, özellikle farklı formatlar ve yapılandırmalarla karşılaştığınızda. Eğer en ufak bir değişiklikte çökme eğiliminde olan dengesiz ya da kaba kuvvet çözümleriyle boğuşuyorsanız, yalnız değilsiniz. Birçok geliştirici, bir e-posta mesajının parçalarını etkili bir şekilde yönetmeye çalışırken benzer sorunlarla karşılaşır; bu parçalar konu, gönderen, gövde veya ekler olabilir. Bu kılavuzda, raw e-postayı PHP’de etkili ve doğru bir şekilde nasıl ayrıştıracağımızı açıklayacağız.
E-posta Yapısını Anlamak
Kodlama yapmadan önce, bir e-postanın RFC2822 gibi standartlarla tanımlanan temel yapısını anlamak önemlidir. Bir e-posta iki ana bileşenden oluşur:
- Başlıklar: E-posta hakkında metaforik veriler içerir.
- Gövde: E-posta içeriğinin kendisidir.
E-posta Formatı
İyi biçimlendirilmiş bir e-posta genellikle şu şekilde görünür:
BAŞLIKLAR
GÖVDE
Başlıklar ile gövde arasındaki ayrım, çift bir boşluk ile belirtilir.
Başlıklar ve Gövde Ayrımı
-
Başlıklar: Her başlık aşağıdaki formatı takip eder:
HSTRING:HTEXT
HSTRING
, bir satırın başında boşluk veya iki nokta olmadan başlar.HTEXT
, boşlukla takip edilmesi durumunda yeni satırlar da dahil olmak üzere çeşitli metin karakterleri içerebilir.
-
Gövde: Bu, ilk boş satırdan sonra gelen herhangi bir veriyi içerir. Örneğin:
BAŞLIK: BAŞLIK METNI
BAŞLIK: DAHA FAZLA BAŞLIK METNI
BAŞLIK: SON BAŞLIK
BU HERHANGİ BİR
RASGELE VERİDİR
PHP’de Raw E-postayı Ayrıştırmak
Yapıyı anladıktan sonra, raw e-postayı PHP’de adım adım nasıl ayrıştıracağımıza bakalım.
Adım 1: Raw E-posta Verilerini Okuma
Öncelikle, raw e-posta verilerini okumanız gerekiyor. PHP scriptiniz e-postaları bir pipe aracılığıyla işlemeye ayarlandıysa, gelen verileri genellikle standart girişten doğrudan yakalar.
Örnek:
$raw_email = file_get_contents('php://stdin'); // Gerçek giriş yöntemi ile değiştirin
Adım 2: Raw E-postayı Başlıklar ve Gövde Olarak Ayırma
Sonra, raw e-posta dizesini başlıklar ve gövde olarak ayırmanız gerekecek:
list($headers, $body) = explode("\n\n", $raw_email, 2);
Adım 3: Başlıkları Ayrıştırma
Bireysel başlıkları ayırmak için explode
fonksiyonunu kullanın:
$header_lines = explode("\n", $headers);
$parsed_headers = [];
foreach ($header_lines as $line) {
// Süreklilik satırlarını işleme
if (isset($current_header)) {
$parsed_headers[$current_header] .= ' ' . trim($line);
} else {
list($key, $value) = explode(':', $line, 2);
$current_header = trim($key);
$parsed_headers[$current_header] = trim($value);
}
}
Adım 4: Gövdeyi İşleme
Gövde çeşitli formatlar içerebilir; MIME türlerini uygun şekilde ele aldığınızdan emin olun. Düz metin, HTML veya hatta eklerle karşılaşabilirsiniz. İşte gövdeyi okuma yolu:
$body = trim($body);
Gövde içeriğini işleme veya saklama ile ilgili özel ihtiyaçlarınıza bağlı olarak burada ek mantığa ihtiyaç duyabilirsiniz.
Sonuç
PHP’de raw e-postayı ayrıştırmak, çerçeveler olmadan gerçekleştirilebilecek temel bir görevdir, yeter ki e-posta formatlarının nasıl çalıştığını net bir şekilde anlayın. Bu kılavuzda belirtilen adımları izleyerek, alınan e-postalardaki değişikliklere bakılmaksızın tutarlı bir şekilde davranacak etkili bir ayrıştırıcı oluşturabilirsiniz.
Sorularınız veya daha fazla yönlendirmeye ihtiyacınız varsa, belirli kullanım senaryolarıyla bizimle iletişime geçmekten çekinmeyin. Mutlu kodlamalar!