Cara Parsing Raw Email di PHP: Panduan Lengkap

Menguraikan email mentah bisa menjadi tugas yang menantang, terutama ketika Anda menghadapi berbagai format dan konfigurasi. Jika Anda telah menghadapi solusi yang tidak stabil atau kasar yang runtuh pada perubahan sekecil apa pun, Anda tidak sendirian. Banyak pengembang menghadapi masalah serupa ketika mencoba menangani bagian-bagian dari pesan email secara efektif—apakah itu subjek, pengirim, konten, atau lampiran. Dalam panduan ini, kita akan membahas bagaimana cara menguraikan email mentah di PHP secara efisien dan benar.

Memahami Struktur Email

Sebelum kita terjun ke dalam pengkodean, penting untuk memahami struktur dasar sebuah email seperti yang didefinisikan oleh standar seperti RFC2822. Sebuah email terdiri dari dua komponen utama:

  1. Header: Ini berisi metadata tentang email.
  2. Body: Ini adalah konten aktual dari email.

Format Email

Email yang terformat dengan baik umumnya terlihat seperti ini:

HEADERS

BODY

Pemisahan antara header dan body ditandai dengan dua baris kosong.

Pemecahan Header dan Body

  • Header: Setiap header mengikuti format:

    HSTRING:HTEXT
    
    • HSTRING dimulai di awal baris tanpa spasi atau titik dua.
    • HTEXT dapat mencakup berbagai karakter teks, termasuk baris baru jika diikuti oleh spasi.
  • Body: Ini mencakup data apa pun yang datang setelah baris kosong pertama. Misalnya:

HEADER: HEADER TEXT
HEADER: more HEADER TEXT
HEADER: LAST HEADER

THIS IS ANY
ARBITRARY DATA

Menguraikan Email Mentah di PHP

Sekarang kita telah memahami strukturnya, mari kita lihat bagaimana cara menguraikan email mentah di PHP langkah demi langkah.

Langkah 1: Membaca Data Email Mentah

Pertama, Anda perlu membaca data email mentah. Jika skrip PHP Anda disetel untuk menangani email melalui saluran, biasanya ia akan menangkap data masuk langsung dari input standar.

Contoh:

$raw_email = file_get_contents('php://stdin'); // Ganti dengan metode input yang sesuai

Langkah 2: Memisahkan Email Mentah Menjadi Header dan Body

Selanjutnya, Anda perlu memisahkan string email mentah menjadi header dan body:

list($headers, $body) = explode("\n\n", $raw_email, 2);

Langkah 3: Mengurai Header

Gunakan fungsi explode untuk memisahkan header individu:

$header_lines = explode("\n", $headers);
$parsed_headers = [];

foreach ($header_lines as $line) {
    // Menangani baris lanjutan
    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);
    }
}

Langkah 4: Memproses Body

Body dapat berisi berbagai format; pastikan untuk menangani tipe MIME dengan tepat. Anda mungkin akan menghadapi teks biasa, HTML, atau bahkan lampiran. Berikut cara membaca body:

$body = trim($body);

Anda mungkin memerlukan logika tambahan di sini, tergantung pada kebutuhan spesifik Anda terkait pemrosesan atau penyimpanan konten body.

Kesimpulan

Menguraikan email mentah di PHP adalah tugas dasar yang dapat dilakukan tanpa kerangka kerja, asalkan Anda memahami dengan jelas bagaimana format email bekerja. Dengan mengikuti langkah-langkah yang diuraikan dalam panduan ini, Anda dapat membuat pengurai yang efektif yang akan berperilaku konsisten terlepas dari variasi dalam email yang diterima.

Jika Anda memiliki pertanyaan atau memerlukan arahan lebih lanjut, jangan ragu untuk menghubungi dengan kasus penggunaan spesifik. Selamat berkoding!