当客户输入包含äü的非ascii字符的电子邮件地址时,我们的SMTP拒绝处理它们。
所以我认为可能有一个解决方案来自己处理这些域并将它们转换为punyocode。
使用c#有一种简单的方法吗?
这还有用吗?
答案 0 :(得分: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
答案 1 :(得分:0)
此方法存在的问题是您正在更改电子邮件地址。
电子邮件地址bevan@example.com
和bevän@example.com
是不同的电子邮件地址,不管它们看起来多么相同。
根据您的建议进行更改打破电子邮件 - 人们可能会收到这些消息,但他们将无法回复这些消息。
不处理重音字符的SMTP服务器听起来像恐龙。因为它可能是众所周知的痛苦,更换和/或升级可能是最好的解决方案。
您可能会在ServerFault上获得更合适的帮助。