이메일 주소에 영숫자가 아닌 문자를 포함 할 수 있습니까?
Django를 사용하여 웹 사이트를 구축하고 있습니다. 이 웹 사이트에는 비영어권 국가의 사용자가 상당수있을 수 있습니다.
이메일 주소에 어떤 유형의 문자가 포함될 수 있는지에 대한 기술적 제한이 있는지 알고 싶습니다.
이메일 주소에는 영어 문자, 숫자 _
, @
및 .
? 만 포함 할 수 있습니까?
é
또는 같은 비 영어 알파벳을 포함 할 수 ü
있습니까?
중국어, 일본어 또는 기타 유니 코드 문자를 포함 할 수 있습니까?
이메일 주소 는 local
@ 앞과 domain
뒤 의 두 부분으로 구성됩니다 .
이 부분에 대한 규칙은 다릅니다.
들어 local part
당신은 ASCII를 사용할 수 있습니다 :
- 라틴 문자 A-Z a-z
- 숫자 0-9
- 특수 문자! # $ % & '* +-/ =? ^ _`{|} ~
- dot., 첫 번째 또는 마지막이 아니며 순서가 아님
- 공백 및 "(), :; <> @ [] 문자는 제한적으로 허용됩니다 (따옴표로 묶인 문자열 내에서만 허용되며 백 슬래시 또는 큰 따옴표 앞에 백 슬래시가 와야 함).
- 또한 2012 년부터 UTF-8로 인코딩 된 위의 국제 문자를 사용할 수 있습니다 .
U+007F
Domain part
더 제한적입니다.
- 라틴 문자 A-Z a-z
- 숫자 0-9
- 하이픈-첫 번째 또는 마지막이 아님, 여러 하이픈을 순서대로 사용할 수 있습니다.
^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})
이것이 시간을 절약하기를 바랍니다.
네, 그렇습니다. Wikipedia 에서 (적어도) 이 기사를 읽으십시오 .
저는 아르헨티나에 살고 있으며 ñoñó1234@server.com과 같은 이메일이 허용됩니다.
이메일 주소에서 허용되는 구문은 RFC 3696에 설명되어 있으며 매우 관련이 있습니다.
정확한 규칙 [로컬 부분; '@'] 앞 부분은 제어 문자를 포함한 모든 ASCII 문자가 따옴표로 묶여 있거나 따옴표로 묶인 문자열로 나타날 수 있다는 것입니다. 인용이 필요한 경우 백 슬래시 문자를 사용하여 다음 문자를 인용합니다.
[...]
인용 부호가 없으면 로컬 부분은 알파벳 문자, 숫자 또는 특수 문자의 조합으로 구성 될 수 있습니다! # $ % & '* +-/ =? ^ _`. {| } ~
[...]
DNS 이름에는 모든 문자 또는 비트 조합 (옥텟)이 허용됩니다. 그러나 대부분의 응용 프로그램에 필요한 기본 양식이 있습니다.
... 등, 약간의 깊이.
어떤 이메일 주소를 포함 할 수 있고 포함 할 수 없는지 걱정하는 대신 설정에서 이메일을 보낼 수 있는지 여부를 테스트하십시오. 이것이 정말로 중요합니다! 이것은 실제로 확인 이메일을 보내는 것을 의미합니다.
그렇지 않으면, 당신이 고안 한 어떤 문자 세트에 머무르는 우발적 인 오타의 훨씬 더 일반적인 경우를 잡을 수 없습니다. (빠른 : random@mydomain.com이 귀하의 사이트에서 사용할 수있는 유효한 주소입니까?) 또한 완벽하게 유효하고 올바른 주소가 잘못되었다고 말할 때 사용자를 불필요하고 무상으로 소외시키는 것을 방지합니다. 다른 답변에서 말했듯이 일부 주소는 여전히 처리하지 못할 수 있습니다 (소외가 필요함). 이메일 주소 처리는 사소한 것이 아닙니다. 그러나 그것은 그들이 당신에게 이메일 주소를 제공하고 싶어하는지 알아 내야하는 것입니다!
확인해야 할 것은 사용자가 @ 앞에 일부 텍스트를 제공하고 그 뒤에 일부 텍스트를 제공하며 주소가 너무 길지 않다는 것입니다 (예 : 1000 자). 경고를 제공하려는 경우 ( "문제가있는 것 같습니다! 오타가 있습니까? 계속하기 전에 다시 확인하십시오"), 괜찮지 만 이메일 주소 추가 프로세스를 차단해서는 안됩니다.
물론, 그들에게 이메일을 보내지 않으려면 그들이 입력하는 모든 것을 가져 가십시오. 예를 들어 주소는 Gravatar 전용으로 사용될 수 있지만 Gravatar는 어쨌든 모든 이메일 주소를 확인합니다.
이 RFC : http://tools.ietf.org/html/rfc3490에 표시된 것처럼 비 ASCII 이메일 주소를 가질 가능성이 있지만 이것이 모든 국가에 대해 설정되지는 않았으며 내가 이해하는 바는 하나뿐입니다. 언어 코드는 각 국가에서 허용되며 ASCII로 변환하는 방법도 있지만 사소한 문제는 아닙니다.
나는 작은 따옴표가있는 이메일 주소를 접했습니다. 공백 (엄밀히 말하면 허용됨), 하나 이상의 '@'기호 및 총 5 자 미만의 주소 문자열은 거부됩니다. 나는 이것이 생성하는 것보다 더 많은 문제를 해결한다고 믿고 있으며, 지금까지 10 년 동안 수십만 개의 주소가 많은 쓰레기 주소를 거부하기 위해 노력했습니다. 또한 삽입 또는 업데이트시 모든 이메일 주소를 다운 케이스하는 트리거가 있습니다.
소유자에게 왕복하지 않고 이메일을 검증하는 것은 불가능하지만 적어도 의심스러운 데이터는 거부 할 수 있습니다.
@ 바탕 마타스 Vaitkevicius '대답 : 나는 좀 더 파이썬에서 정규식을 수정 한 것은에 정의 된대로 유효한 이메일 주소와 일치해야하는 이 페이지 와 페이지 : 그 멋진 regex101 웹 사이트 사용, 위키 피 디아의 https : //로 regex101합니다. com / r / uP2oL7 / 26
이것이 누군가를 돕기를 바랍니다! :)
'development' 카테고리의 다른 글
Visual Studio에서 지정된 폴더 또는 파일 형식으로 검색을 제한 하시겠습니까? (0) | 2020.12.04 |
---|---|
Inno Setup Installer를 실행할 때 PATH 환경 변수를 어떻게 수정합니까? (0) | 2020.12.04 |
리소스 ID의 정수 배열 만들기 (0) | 2020.12.04 |
개체를 쿼리 문자열 형식으로 직렬화하는 방법은 무엇입니까? (0) | 2020.12.04 |
품질을 100으로 설정하면 JPEG가 손실되지 않습니까? (0) | 2020.12.04 |