2009-10-20 11 views
3

Lorsque des clients entrent des adresses e-mail avec des caractères non ascii comme äüö, notre SMTP refuse de les traiter.Convertir un domaine non ASCII en compatible SMTP

Donc, je pense qu'il pourrait y avoir une solution pour gérer ces domaines moi-même et les convertir en punyocode.

Existe-t-il un moyen simple d'utiliser C#?

Est-ce que cela fonctionnerait quand même?

+0

RFC821 et RFC822 sont assez vieux, même RFC2822 est rendu obsolète. Mais au moins jusqu'à RFC2821 et RFC2822, l'adresse SMTP ne peut contenir qu'un sous-ensemble de caractères ASCII. Si vous regardez http://en.wikipedia.org/wiki/E-mail_address et la section "Internationalisation". Vous verrez ce qui s'est passé. Il est important de vérifier le support des nouvelles normes de votre MTA actuel. Je ne comprends pas exactement votre cas d'utilisation. L'utilisateur interfère directement avec votre MTA? Avez-vous pu leur attribuer l'adresse SMTP avec un caractère accentué lors de sa configuration? – Junping

Répondre

8

Vous pouvez utiliser Uri.DnsSafeHost pour convertir en 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; 
    } 
} 

En app.config:

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

Résultat:

xn--caf-dma.com 
+0

Ajouté le code C#, mais cela ne fonctionne pas comme le nom de domaine est retourné tel quel, où dois-je ajouter les paramètres de configuration pour l'application ASP.net en ajoutant cela dans web.config donne une erreur. –

+1

Est-il possible d'y parvenir sans apporter de modifications à machine.config? –

+0

@Pranali: Je * crois * qu'il y a quelque chose dans la configuration IIS qui vous permet de spécifier la configuration à utiliser pour un site web ASP.NET ... pas sûr. –

0

Le problème avec cette approche est que vous serez en changeant les adresses e-mail.

L'adresse e-mail [email protected] et bevä[email protected] sont différentes adresses e-mail, mais ils apparaissent beaucoup plus les mêmes.

Faire le changement que vous suggérez break email - les gens peuvent recevoir les messages, mais ils ne pourront pas y répondre.

Votre serveur SMTP qui ne gère pas les caractères accentués ressemble à un dinosaure. Tout comme il pourrait être une douleur dans le proverbial, le remplacement et/ou la mise à niveau est probablement la meilleure solution. Vous pouvez probablement obtenir une assistance plus appropriée sur ServerFault.

+2

Ce n'est pas un "dinosaure" - c'est juste après RFC 822. –

Questions connexes