【问题标题】:How to use email adresses with special chars such as Ø如何使用带有特殊字符(例如 Ø)的电子邮件地址
【发布时间】:2010-06-09 11:07:35
【问题描述】:

这样写:

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

注意域部分中的“ø”。

我得到一个异常说明:

System.FormatException:指定的字符串不是电子邮件地址所需的格式。 在 System.Net.Mime.MailBnfHelper.ReadMailAddress(字符串数据,Int32& 偏移量,字符串& displayName) 在 System.Net.Mail.MailAddress.ParseValue(字符串地址) 在 System.Net.Mail.MailAddress..ctor(字符串地址,字符串 displayName,编码 displayNameEncoding) 在 System.Net.Mail.MailAddress..ctor(字符串地址)

使用的地址应该是完全有效的。

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

【问题讨论】:

    标签: c# internationalization system.net.mail


    【解决方案1】:

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

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

    【讨论】:

    • 如果我理解正确,使用 IDN 作为域名的电子邮件需要使用 punycode 才能符合 rfc-822?
    • 我想这就是我所说的,是的。不要射击信使... ;)
    • 我不会 :) 这实际上为我省去了很多麻烦 :D
    【解决方案2】:

    您可能需要使用主机名的编码变体。参见here,IDNA 编码示例

    【讨论】:

      【解决方案3】:

      RFC 1034 描述域名

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

      【讨论】:

        猜你喜欢
        • 2010-10-03
        • 2019-11-06
        • 2019-01-22
        • 1970-01-01
        • 2015-07-31
        • 2013-09-11
        • 2017-08-25
        • 1970-01-01
        • 2011-10-29
        相关资源
        最近更新 更多