2009-10-20 4 views
3

고객이 ASCII와 같은 비 ASCII 문자로 이메일 주소를 입력하면 SMTP가 SMTP를 처리하지 못합니다.non-ascii 도메인을 SMTP 호환으로 변환

그래서 나는 그 도메인을 직접 처리하고 punyocode로 변환 할 수있는 해결책이있을 것이라고 생각합니다.

C#을 사용하여 간단한 방법이 있습니까?

어쨌든 작동합니까?

+0

RFC821 및 RFC822는 꽤 오래된도 RFC2822는 쓸모 없어졌습니다. 그러나 최소한 RFC2821 및 RFC2822까지 SMTP 주소에는 ASCII 문자의 하위 집합 만 포함될 수 있습니다. http://en.wikipedia.org/wiki/E-mail_address 및 "국제화"섹션을 참조하십시오. 무슨 일이 일어 났는지 보게 될 것입니다. 현재 MTA의 새로운 표준 지원을 확인하는 것이 중요합니다. 나는 당신의 유스 케이스를 정확히 이해하지 못한다. 사용자가 MTA와 직접 연결하고 있습니까? 그를 설정할 때 악센트 부호가있는 문자로 SMTP 주소를 할당 할 수 있었습니까? – Junping

답변

8

당신은 퓨니 코드로 변환 Uri.DnsSafeHost를 사용할 수의 app.config에서

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

:

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

결과 :

xn--caf-dma.com 
+0

C# 코드가 추가되었지만 도메인 이름이 그대로 반환되기 때문에 작동하지 않습니다. ASP.net 응용 프로그램의 구성 설정을 어디에 추가해야합니까? web.config가 오류를 발생시킵니다. –

+1

machine.config를 변경하지 않고이 작업을 수행 할 수 있습니까? –

+0

@Pranali : 저는 IIS 구성에 ASP.NET 웹 사이트에 사용할 구성을 지정할 수있는 것이 있습니다. 확실하지 않습니다. –

0

이 접근법의 문제점은 이 (가) 이메일 주소를 변경한다는 것입니다.

이메일 주소 [email protected]bevä[email protected]개의 다른 이메일 주소입니다. 그러나 대부분 동일하게 나타납니다.

변경 사항을 적용하면 이 (가)으로 전화를 겁니다. 사람들이 메시지를받을 수는 있지만 답장을 보낼 수 없습니다.

악센트 부호가있는 문자를 처리하지 않는 SMTP 서버는 공룡처럼 들립니다. 속담에 큰 고통이 될 수도 있기 때문에 교체 및/또는 업그레이드가 가장 좋은 해결책 일 수 있습니다.

ServerFault에 대한 도움을받을 수 있습니다.

+2

"공룡"이 아닙니다. 단지 RFC 822를 따른 것입니다. –