ID email dengan tanda hubung di ujung bagian lokal

19

Apakah ini email yang valid jika email memiliki tanda hubung (-) di bagian lokal email? Sebagai contoh,

[email protected]

Atau untuk menggeneralisasi, dapatkah salah satu dari karakter ini ( Characters !#$%&'*+-/=?^_``{|}~ (ASCII: 33, 35-39, 42, 43, 45, 47, 61, 63, 94-96, 123-126)), yang valid berada di bagian lokal dari email di awal dan / atau akhir dari id email?

Google mengatakan itu tidak valid, jadi untuk saat ini saya menganggapnya juga tidak valid, meskipun RFC mengecualikan hanya karakter [titik] dari memulai dengan dan / atau mengakhiri bagian lokal.

Kesalahan GMail untuk kasus di atas

Catatan: Saya tidak khawatir tentang bagian domain, karena itu menjadi lebih terlibat karena cara DNS, yang mempersulit pertanyaan dan jawaban.

https://social.technet.microsoft.com/Forums/ie/en-US/69f393aa-d555-4f8f-bb16-c636a129fc25/what-are-valid-and-invalid-email-address-characters

Jimson Kannanthara James
sumber
Pertanyaan bagus. Sudahkah Anda melihat pertanyaan dan jawaban utas Stack Overflow ini ? Banyak info — banyak yang kedaluwarsa pada saat ini — tetapi masih merupakan titik awal yang baik /
JakeGould
tautan referensi yang bagus, tampaknya google menganggap email itu tidak valid, sementara Microsoft tidak memiliki masalah.
Jimson Kannanthara James
1
Membagikan ini sejak Anda membuka Google: Gmail mengabaikan periode dalam alamat email, jadi jika email Anda adalah "[email protected]", Anda juga akan menerima email yang dikirim ke "[email protected]". Itu juga mengabaikan plus di akhir alamat email: "[email protected]".
mowwwalker
1
Pada layanan email saya sendiri, saya dapat melarang surat "u" dari nama pengguna. Hanya karena.
Agent_L

Jawaban:

60

Apakah ini email yang valid jika email memiliki tanda hubung (-) di bagian lokal email? [...] Google mengatakan itu tidak valid, jadi untuk saat ini saya menganggapnya juga tidak valid, meskipun RFC mengecualikan hanya karakter [titik] dari memulai dengan dan / atau mengakhiri bagian lokal.

Itu sah. Anda hanya melihatnya ditolak oleh Google karena melakukan pemeriksaan yang sama sekali berbeda - mereka memiliki kebijakan sendiri tentang apa yang bisa menjadi bagian lokal , seperti halnya banyak penyedia lainnya.


Google, atau siapa pun, akan berkewajiban untuk menerima semua alamat email yang mungkin valid hanya jika formulir itu benar-benar meminta alamat email yang ada dan valid (mungkin dari penyedia). Misalnya, ini akan menjadi kesalahan jika bidang Ke: / Cc: Gmail menolak alamat yang valid.

Tetapi bidang yang Anda sorot tidak meminta alamat email yang ada; ia meminta nama akun pada sistem Google, yang akan menjadi dasar untuk alamat email hanya setelah akun dibuat. Tidak ada yang melarang Google, atau siapa pun, untuk membatasi rangkaian nama akun yang valid (atau, sebenarnya, bahkan nama kotak surat) pada sistem mereka sendiri .

Atau, dengan kata lain, mendefinisikan karakter yang diperbolehkan untuk 'bagian lokal' hanya berarti bahwa aplikasi email server SMTP harus menerima alamat tersebut dalam header RFC 822 dan perintah SMTP - tetapi tidak mengatakan apa-apa tentang cara membuat kotak surat seperti itu. (Memang, pada saat RFC email awal ditulis dan sebagian besar kotak surat masih terikat dengan akun tingkat OS, nama mereka memiliki batas yang sama atau bahkan lebih ketat.)

Misalnya, bagian RFC 5321 ini (bagian 4.1.2, di bawah ABNFs) secara eksplisit mengatakan bahwa host penerima diizinkan untuk dan memang harus memiliki batasan yang lebih ketat tentang bagaimana nama kotak suratnya dinamai:

Sementara definisi di atas untuk bagian-lokal relatif permisif, untuk interoperabilitas maksimum, tuan rumah yang mengharapkan untuk menerima surat HARUS menghindari mendefinisikan kotak surat di mana bagian-lokal membutuhkan (atau menggunakan) bentuk string-Dikutip atau di mana bagian-lokal adalah kasus -peka.

Jadi, meskipun [email protected] adalah sintaksis valid, itu saja tidak berarti bahwa Google harus memungkinkan Anda untuk membuat itu.

grawity
sumber
6
Sebagai catatan tambahan yang menarik, Google mengabaikan periode dalam alamat email ( gmail.googleblog.com/2008/03/... ), yang juga tidak ditentukan dalam RFC. Jadi, [email protected] pergi ke tempat yang sama dengan [email protected] atau [email protected].
childofsoong
4
@JimsonKannantharaJames Secara umum, jika Anda ingin memeriksa apakah email itu valid, Anda sebenarnya harus mengirim email ke alamat itu dan memaksa pengguna untuk mengambil tindakan. Setiap cek hanya berdasarkan sintaks alamat seharusnya hanya untuk menangkap pengguna yang membuat kesalahan ketik.
Michael Mior
1
@ kegembiraan Oh saya tahu - Saya berkomentar untuk memberikan contoh hal lain yang tidak ditentukan dalam RFC tetapi diizinkan.
childofsoong
1
@ user71659 Jika Anda tidak keluar dengan benar dari karakter kontrol jika perlu, Anda memiliki masalah yang lebih besar. Pada akhirnya email itu diinput oleh pengguna dan input pengguna harus selalu dianggap berbahaya. Mengasumsikan beberapa bidang dalam database Anda aman karena beberapa aturan validasi bisa sangat berbahaya. Apa yang terjadi ketika beberapa bulan kemudian seseorang mengisi bidang itu dari bentuk lain yang tidak memiliki validasi yang sama?
Michael Mior
2
@ user71659 Anda menggabungkan dua masalah berbeda dan memperkeruh argumen. MichaelMior sempurna benar untuk negara itu untuk memverifikasi bahwa alamat email ada , Anda akan harus mengirim email ke alamat yang memerlukan tindakan pengguna.
kumarharsh
7

G Suite (secara resmi Google Apps untuk Domain Anda) memang memungkinkan tanda hubung (tanda hubung) dalam alamat email, bahkan sebagai karakter terakhir.

Nama pengguna dapat berisi huruf (az), angka (0-9), tanda hubung (-), garis bawah (_), apostrof ('), dan titik (.).

Sumber: Panduan nama dan kata sandi

Seperti yang Anda catat, Gmail tidak mengizinkan tanda hubung di alamat email.

davidmneedham
sumber