C# 将非ascii域转换为SMTP兼容域

C# 将非ascii域转换为SMTP兼容域,c#,ascii,diacritics,email-address,punycode,C#,Ascii,Diacritics,Email Address,Punycode,当客户输入带有非ascii字符(如äüö)的电子邮件地址时,我们的SMTP拒绝对其进行处理 所以我认为可能有一个解决方案可以自己处理这些域,并将它们转换成punyocode 有没有一种使用c#的简单方法 这样行吗 这种方法的问题是您将更改电子邮件地址 电子邮件地址bevan@example.com和bevän@example.com是不同的电子邮件地址,无论它们看起来有多相同 做出你建议的改变会破坏电子邮件——人们可能会收到邮件,但他们无法回复 不处理重音字符的SMTP服务器听起来像恐龙。正如谚

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

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

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


这样行吗

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

电子邮件地址
bevan@example.com
bevän@example.com
是不同的电子邮件地址,无论它们看起来有多相同

做出你建议的改变会破坏电子邮件——人们可能会收到邮件,但他们无法回复

不处理重音字符的SMTP服务器听起来像恐龙。正如谚语所说,更换和/或升级很可能是最好的解决方案

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

您可以使用转换为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>

它不是“恐龙”-它只是遵循RFC 822。添加了C#代码,但它不起作用,因为域名会按原样返回,我应该在哪里添加ASP.net应用程序的配置设置,因为在web.config中添加此设置会出现错误。是否可以在不更改machine.config的情况下实现此设置?@Pranali:我相信IIS配置中有某种东西可以让您指定用于ASP.net网站的配置。。。不确定。RFC821和RFC822都很旧,甚至RFC2822也已过时。但至少在RFC2821和RFC2822之前,SMTP地址只能包含ASCII字符的子集。如果你看“国际化”一节。你会看到发生了什么。检查您当前MTA的新标准的支持情况非常重要。我不完全理解您的用例。用户是否直接与您的MTA交互?在为他们设置SMTP地址时,您是否能够为他们分配带有重音字符的SMTP地址?
xn--caf-dma.com