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

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

是否有使用 c# 这样做的简单方法?

这会奏效吗?

最佳答案

您可以使用 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;
    }
}

在 app.config 中:
<configuration>
  <uri>
    <idn enabled="All" />
  </uri>
</configuration>

结果:
xn--caf-dma.com

关于c# - 将非 ascii 域转换为 SMTP 兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1592703/

10-16 12:48