Bahasa Melayu

Alat pembangun · URL pengekod & penyahkod

Cara mengekod mailto: pautan dengan subjek, pemisah baris badan dan ampersand

· Mengapa ia penting

mailto pengekodan url html

Struktur pautan Mailto dengan subjek dan badan yang dikodkan
Ilustrasi vektor ToolAcre asal

Pautan mailto: dengan subjek dan kandungan ialah URL, jadi ruang, pemisah baris dan & mesti dikodkan peratus. Siaran ini menunjukkan perkara yang rosak apabila mereka tidak dan cara membina pautan yang dibuka dengan betul dalam klien mel.

Pautan kenalan yang subjeknya berhenti di ruang pertama — mailto konkrit pecah: dan perkara yang diterima oleh klien mel

Hubungi pautan seperti <a href="mailto:test@example.com?subject=Support Inquiry">Hantar</a> putus kerana ruang dalam "Siasatan Sokongan" menamatkan pautan dalam klien mel. Ramai pelanggan sahaja menerima "Sokongan" sebagai subjek. Ini berlaku kerana pautan mailto: mengikuti RFC 6068, menyatakan bahawa ruang dan aksara khas memerlukan pengekodan peratus dalam parameter pertanyaan. Ampersand memerlukan pengekodan %26 untuk mengelak daripada menjadi pemisah parameter.

Mailto rosak: pautan menunjukkan masalah dengan jelas. Pautan yang dibina seperti <a href="mailto:test@example.com?subject=Support Inquiry&body=Reply">Contact</a> menghasilkan mesej dengan subjek "Sokongan" sahaja. Ujian dalam klien mel berbeza mendedahkan toleransi yang berbeza-beza: Apple Mail mengendalikan sebahagian pautan, Gmail sahaja menunjukkan "Sokongan", Outlook gagal sepenuhnya.

mailto: ialah skema URL — RFC 6068 secara ringkas, dan bahagian manakah rentetan pertanyaan

RFC 6068 mentakrifkan mailto: URL skim dengan peraturan pengekodan khusus komponen. Tidak seperti URL biasa, mailto: mempunyai peraturan khusus bagi setiap komponen. Bahagian alamat (test@example.com) kekal tidak dikodkan; @ dan domain adalah berstruktur. Parameter pertanyaan (subjek, kandungan, cc, bcc) memerlukan pengekodan. RFC 6068 rujukan RFC 3986 untuk peraturan, mewajibkan pengekodan peratus untuk ruang dan aksara khas. Ampersand dalam nilai menjadi %26 apabila muncul sebagai data, bukan pembatas.

Memahami mailto: struktur skema menghalang kesilapan pengekodan. Borangnya ialah: mailto:address?parameter1=value1&parameter2=value2. Tanda soal memperkenalkan bahagian pertanyaan. Parameter pemisah ampersand kekal tidak dikodkan; sahaja ampersand dalam nilai mengekod sebagai %26. Jika subjek mengandungi "Tom & Jerry", kodkan sebagai Tom%20%26%20Jerry. Ampersand antara subjek dan badan kekal tidak dikodkan. Pengekodan bersarang ini terdedah kepada ralat.

Pengekodan subjek dan kandungan — ruang sebagai %20, pemisah baris sebagai %0D%0A dan & sebagai %26 dalam nilai

Pengekodan subjek dan badan memerlukan pengendalian ruang dan aksara khas dengan teliti. Ruang menjadi %20 dalam pautan mailto:, bukan tanda tambah tidak seperti borang HTML. Perbezaan kritikal ini membuatkan pembangun yang biasa dengan borang web. Pengekodan pemisah baris sebagai %0D%0A (CRLF pengakhiran baris dalam e-mel). Ampersand menjadi %26. Tanda peratusan menjadi %25. Subjek biasanya mengandungi ruang, aksen dan kurungan. Badan mengandungi ruang, aksen, pemisah baris.

Pengekodan biasa dalam mailto: pautan termasuk: ruang sebagai %20, baris baharu sebagai %0D%0A, ampersand sebagai %26, peratus sebagai %25, cincang sebagai %23, soalan sebagai %3F. bukan-ASCII seperti loghat mula-mula ditukar kepada UTF-8 bait kemudian peratus-enkod. "Laporan Über" menjadi %C3%9ber%20laporan. "Hello! Selamat tinggal" menjadi Hello%21%0D%0ASelamat tinggal. Kod sahaja nilai, bukan struktur? dan & watak.

Contoh yang berjaya: membina pautan dengan subjek, badan dua baris dan cc — hasil yang dikodkan dan cara ia muncul dalam klien mel

Contoh kerja: membina pautan dengan subjek "Agenda mesyuarat (Sept)", badan "Mari kita bincangkan: Matlamat suku tahunan", dan cc "manager@example.com" menunjukkan pengekodan lengkap. Subjek memerlukan: ruang sebagai %20, kurungan sebagai %28 dan %29. Badan memerlukan: "Mari kita bincangkan:" kebanyakannya tidak berubah (ruang ialah %20), pemisah baris kerana %0D%0A, "Matlamat suku tahunan" kebanyakannya tidak berubah. Medan cc tidak memerlukan pengekodan.

Mailto yang terhasil ialah: mailto:contact@example.com?subject=Meeting%20agenda%20%28Sept%29&badan=Biar%20us%20discuss%3A%0D%0AQuarterly%20goals&cc=manager@example.com. Ujian dalam pelayar mendedahkan tafsiran klien mel yang berbeza. Gmail membuka tetingkap karang dengan subjek yang betul, badan dua baris dan cc. Outlook menunjukkan hasil yang serupa. Apple Mail memerlukan kebenaran. Pelanggan yang lebih tua gagal kerana kekurangan sokongan badan.

Mengapa + salah di sini — mailto: mengikuti RFC 3986, bukan pengekodan bentuk, jadi + kekal sebagai nilai tambah

Mengapa tanda tambah salah—mailto: mengikuti RFC 3986, bukan pengekodan bentuk, jadi tambah kekal literal—menjelaskan perbezaan kritikal. HTML pengekodan borang menggunakan tambah untuk ruang dalam rentetan pertanyaan. RFC 3986 dan RFC 6068 kedua-duanya menyatakan %20 untuk ruang. A mailto: dengan subjek="Meeting+Agenda" mencipta subjek dengan tanda tambah literal, bukan ruang. Kesilapan ini berlaku menyalin logik pengekodan borang ke mailto: generation. Plus bermaksud tambah, bukan ruang.

Mengapa ini penting: pembangun menyalin borang GET logik penyerahan ke pautan pemisah generasi mailto:. Subjek "Agenda Mesyuarat" menjadi "Agenda+Mesyuarat" dalam borang. Dalam pautan mailto:, ia mencipta "Mesyuarat+Agenda" dengan tambah literal. Pengguna membetulkan baris subjek secara manual. Menguji mailto: pautan memerlukan mengkliknya atau memeriksa pautan yang dijana, bukan menganalisis peraturan borang.

Kesilapan biasa — terlupa HTML-melepaskan & pemisah dalam href, dan peratus mengekod @ dalam alamat

Mailto biasa: kesilapan membina termasuk melupakan HTML ampers dan pelepasan aksara dalam atribut href. Dalam HTML, ampersand dalam atribut hendaklah &amp; untuk XHTML yang sah. href="mailto:address?subject=Test&body=Test" tidak sah HTML; ia sepatutnya href="mailto:address?subject=Test&amp;body=Test". Ini mewakili pengekodan berbeza daripada pengekodan URL. HTML penghurai mentafsir &amp; sebagai & sebelum pelayar memproses URL.

Ujian untuk kesilapan ini memerlukan pemeriksaan HTML sumber dan konsol pelayar. Klik kanan dan pilih "Inspect Element" untuk melihat nilai href sebenar. Salin-tampal nilai href ke dalam bar alamat (dengan awalan mailto:) dan semak klien mel. Sesetengah pautan e-mel berfungsi dalam pelayar tertentu tetapi tidak pada yang lain. Ujian automatik adalah sukar kerana mailto: melibatkan pelanggan luar, menjadikan pengesahan manual biasa.

Perkara ini tidak meliputi — perbezaan sokongan pelanggan mel dan berbilang penerima secara mendalam

Perkara ini tidak meliputi perbezaan sokongan pelanggan mel dan berbilang penerima. Tidak semua pelanggan sama-sama menyokong parameter RFC 6068. Parameter badan mempunyai sokongan yang luas tetapi sesetengah pelanggan yang lebih tua mengabaikannya. Parameter cc dan bcc mempunyai sokongan berubah-ubah. Berbilang penerima memerlukan alamat e-mel pemisah koma, pengekodan koma sebagai %2C untuk alamat kompleks. Tempat yang berbeza memerlukan pengekodan UTF-8 yang betul untuk paparan.

Evolusi klien mel mempengaruhi mailto: tingkah laku merentas platform. Pelanggan mel web moden (Gmail, Outlook.com) mempunyai pematuhan RFC 6068 yang lebih baik daripada pelanggan desktop lama. Pelanggan mudah alih kadangkala mempunyai penghuraian yang lebih ketat. Sesetengah menyokong teks kaya manakala yang lain menyokong teks biasa sahaja. Pembangun harus menguji dengan klien mel yang sebenarnya digunakan oleh khalayak mereka. Pelaksanaan sebenar berbeza-beza walaupun RFC 6068 spesifikasi.

Bawa pulang: mengekod setiap nilai, kekalkan struktur — bagaimana mod nilai tunggal pengekod & penyahkod URL memberi anda subjek dan kandungan yang dikodkan untuk ditampal

Bawa pulang: mengekod setiap nilai, kekalkan struktur—mod nilai tunggal URL pengekod & penyahkod menghasilkan subjek dan badan yang dikodkan sedia untuk ditampal ke dalam pautan. Alat ini menerima nilai yang tidak dikodkan seperti "Agenda mesyuarat (Sept)" dan menghasilkan "Meeting%20agenda%20%28Sept%29". Salin output terus ke mailto: atribut href. Untuk badan berbilang baris, tampal versi teks biasa dengan pemisah baris, dapatkan versi berkod %0D%0A.

Amalan terbaik memasang mailto: pautan daripada bahagian yang dikodkan dan bukannya pembinaan manual. Apabila membina HTML secara dinamik dalam JavaScript atau templat, kodkan setiap parameter secara berasingan sebelum digabungkan dengan & pemisah. Untuk HTML statik, URL pengekod & penyahkod dengan pasti menguji pengekodan sebelum menulis tangan. Proses pengekodan dokumen dalam ulasan kod. Uji mailto yang terhasil: pautan dengan mengkliknya dengan klien mel sebenar sebelum penggunaan.