问题
When customers enter email addresses with non-ascii chars like äüö our SMTP rejects to process them.
So I think might be there is a solution to handle those domains myself and convert them to punyocode.
Is there a simple way of doing so using c#?
Would this work anyway?
回答1:
You can use Uri.DnsSafeHost to convert to 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;
}
}
In app.config:
<configuration>
<uri>
<idn enabled="All" />
</uri>
</configuration>
Result:
xn--caf-dma.com
回答2:
The problem with this approach is that you'll be changing the email addresses.
The email addresses bevan@example.com
and bevän@example.com
are different email addresses, however much they appear the same.
Making the change you suggest will break email - people might receive the messages, but they won't be able to reply to them.
Your SMTP server that doesn't handle accented characters sounds like a dinosaur. Much as it might be a pain in the proverbial, replacement and/or upgrade is likely the best solution.
You'll likely be able to get more appropriate assistance over on ServerFault.
来源:https://stackoverflow.com/questions/1592703/convert-non-ascii-domain-to-smtp-compatible