国际字符(例如元音变音字符)在电子邮件地址的本地部分是不是有效?
Posted
技术标签:
【中文标题】国际字符(例如元音变音字符)在电子邮件地址的本地部分是不是有效?【英文标题】:Are international characters (e.g. umlaut characters) valid in the local part of email addresses?国际字符(例如元音变音字符)在电子邮件地址的本地部分是否有效? 【发布时间】:2013-02-13 19:22:19 【问题描述】:德语变音符号(ä、ö、ü)和 sz 字符 (ß) 在电子邮件地址的本地部分是否有效?
以这个电子邮件地址为例:björn.nußbaum@trouble.org
RFC 5322 非常清楚地表明,元音变音(和其他国际字符)是不允许的。如果我看一下3.4.1章节,关于本地部分有以下内容:
local-part = dot-atom / quoted-string / obs-local-part
那么dot-atom
是什么意思?在3.2.3章节中有描述:嗯,长话短说:Printable US-ASCII characters not including specials
所以在整个 RFC 5322 中,我看不到任何关于国际字符的内容。 还是 RFC 5322 已经过时了? (RFC 822 -> RFC 2822 -> RFC 5322)
更新: 对我来说重要的一点是:目前的标准是什么?是否允许使用国际字符? RFC 5322 被标记为草案标准。所以我认为这是最新的来源,不是吗?
Efran 提到,RFC 5336 允许使用国际字符。但是 RFC 5336 被标记为 EXPERIMENTAL,所以这对我来说并不有趣。
【问题讨论】:
是的,它们是有效字符。参考:debounce.io/blog/articles/email-syntax-error-explained 【参考方案1】:是的,只要负责该电子邮件地址的邮件交换器支持UTF8SMTP extension(在 RFC 5336 中讨论),它们就是有效字符。请注意,只有一小部分邮件交换器存在支持国际化的电子邮件地址。
例如,我们用于 Microsoft .NET 的 email validation component 和 REST email validation service 都允许在电子邮件地址的本地部分使用 UTF8 字符,但如果其相关的邮件交换器不支持上述扩展名,则会将其标记为无效。
【讨论】:
您知道哪些邮件交换器/域已经允许在电子邮件地址的本地部分使用变音符号吗?【参考方案2】:https://www.rfc-editor.org/rfc/rfc5322#section-3.4.1 是您最新的标准跟踪参考。通常不建议使用需要引用的字符,因为存在大量不符合标准的 MTA。从长远来看,这样的电子邮件势必会丢失。
作为一个友好的建议,这个表格也非常有用(来自 Jochen Topf,标题为“电子邮件地址的本地部分中的字符”):https://www.jochentopf.com/email/chars.html
【讨论】:
第二个链接现在失效了,有没有可用的替代链接? @manish 是的,已更新,感谢提及!旁注:archive.org 也是你的朋友。 :-)【参考方案3】:看起来 rfc6531 替换了 5336,它是“提议的标准” https://www.rfc-editor.org/rfc/rfc6531
【讨论】:
以上是关于国际字符(例如元音变音字符)在电子邮件地址的本地部分是不是有效?的主要内容,如果未能解决你的问题,请参考以下文章
将 MySQL 字段字符集从 latin1 更改为 utf8_general_ci 会破坏元音变音 (ä,ö,ü)
在更长的字符串中,如何在 PostgreSQL(和/或 Python 3)中将一个字符(例如,'a')和一个变音字符(例如,'U+030A')转换为单个字符('å')[重复]