如何使用带有特殊字符如Ø的电子邮件地址

3

通过编写以下内容:

var recipient = new MailAddress("name@abcø.dk");

请注意域名部分的 "ø"。
我遇到了一个异常,提示如下:
System.FormatException: 指定的字符串不符合电子邮件地址的要求。 at System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset, String& displayName) at System.Net.Mail.MailAddress.ParseValue(String address) at System.Net.Mail.MailAddress..ctor(String address, String displayName, Encoding displayNameEncoding) at System.Net.Mail.MailAddress..ctor(String address)
使用的地址应该是完全有效的。
因此,我猜想我需要以某种方式对地址进行编码?
3个回答

6

RFC-822规定,该域的每个部分必须完全由ASCII字符组成,不包括空格和控制字符。根据这个标准,您的电子邮件地址无效。

对于国际化域名来说,这意味着您只能使用该域名的ASCII形式才能获得符合RFC-822标准的电子邮件地址。


如果我理解正确的话,使用IDN作为域名的电子邮件需要使用punycode才能符合rfc-822标准,是吗? - Calyth
我觉得那就是我说的,是的。别打击信使...;) - David M
我不会 :) 这实际上节省了我很多麻烦 :D - Calyth

3
你可能需要使用编码后的主机名。请参见这里,IDNA编码示例。

0

RFC 1034 描述了域名

标签必须遵循 ARPANET 主机名的规则。它们必须以字母开头,以字母或数字结尾,并且只能包含字母、数字和连字符作为内部字符。还有一些长度上的限制。标签必须少于63个字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接