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

C# 如何使用带有特殊字符的电子邮件地址,如Ø;,c#,internationalization,system.net.mail,C#,Internationalization,System.net.mail,通过这样写: var recipient = new MailAddress("name@abcø.dk"); 注意域部分中的“ø” 我得到一个例外声明: System.FormatException:指定的字符串不是电子邮件地址所需的格式。 位于System.Net.Mime.MailBnfHelper.ReadMailAddress(字符串数据、Int32和偏移量、字符串和显示名称) 位于System.Net.Mail.MailAddress.ParseValue(字符串地址) 位于Sys

通过这样写:

var recipient = new MailAddress("name@abcø.dk");
注意域部分中的“ø”

我得到一个例外声明:

System.FormatException:指定的字符串不是电子邮件地址所需的格式。 位于System.Net.Mime.MailBnfHelper.ReadMailAddress(字符串数据、Int32和偏移量、字符串和显示名称) 位于System.Net.Mail.MailAddress.ParseValue(字符串地址) 位于System.Net.Mail.MailAddress..ctor(字符串地址、字符串显示名称、编码显示名称编码) 位于System.Net.Mail.MailAddress..ctor(字符串地址)

使用的地址应该完全有效


所以我猜我必须以某种方式对地址进行编码?

您可能需要使用主机名的编码变体。参见,IDNA编码示例RFC-822规定,该域的每个部分必须完全由ASCII字符构成,不包括空格和控制字符。根据此标准,您的电子邮件地址无效

对于国际化域名而言,这意味着您只能通过使用该域名的ASCII格式获得符合RFC-822的电子邮件地址。

描述了域名

标签必须遵循ARPANET主机名的规则。他们必须 以字母开头,以字母或数字结尾,并具有内部 仅限字母、数字和连字符。还有一些
长度限制。标签必须是63个字符或更少。

如果我理解正确,使用IDN作为域名的电子邮件需要使用punycode,才能符合rfc-822?我想这正是我所说的,是的。不要向信使开枪……;)我不会:)这实际上帮我省了很多麻烦