3

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

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

有没有使用 c# 的简单方法?

无论如何,这行得通吗?

4

2 回答 2

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;
    }
}

在 app.config 中:

<configuration>
  <uri>
    <idn enabled="All" />
  </uri>
</configuration>

结果:

xn--caf-dma.com
于 2009-10-20T06:10:31.680 回答
0

这种方法的问题在于您将更改电子邮件地址。

电子邮件地址bevan@example.combevän@example.com不同的电子邮件地址,尽管它们看起来相同。

进行您建议的更改会破坏电子邮件 - 人们可能会收到这些消息,但他们将无法回复它们。

不处理重音字符的 SMTP 服务器听起来像恐龙。尽管众所周知,更换和/或升级可能是一种痛苦,但它可能是最好的解决方案。

您可能会在ServerFault上获得更合适的帮助。

于 2009-10-20T05:57:52.573 回答