将非ascii域转换为SMTP兼容

kco*_*ode 3 c# ascii email-address diacritics punycode

当客户输入带有非ascii字符的电子邮件地址时,例如äüö我们的SMTP拒绝处理它们.

所以我认为可能有一个解决方案来自己处理这些域并将它们转换为punyocode.

使用c#有一种简单的方法吗?

这还行吗?

Jon*_*eet 8

您可以使用Uri.DnsSafeHost转换为Punycode:

using System;

class Test
{
    static void Main()
    {
        Console.WriteLine(ConvertToPunycode("caf\u00e9.com"));
    }

    static string ConvertToPunycode(string domain)
    {
        Uri uri = new Uri("http://"+domain);
        return uri.DnsSafeHost;
    }
}
Run Code Online (Sandbox Code Playgroud)

在app.config中:

<configuration>
  <uri>
    <idn enabled="All" />
  </uri>
</configuration>
Run Code Online (Sandbox Code Playgroud)

结果:

xn--caf-dma.com
Run Code Online (Sandbox Code Playgroud)