2014-09-20 8 views
4

나는 POP3을 사용하여 전자 메일을 수신합니다. 그러나 전자 메일의 제목 "주체"와 같은 인코딩 오류는 "涓婚"로 바뀝니다. 중국어 오류, 텍스트의 내용이 영어 인 경우 강력한 텍스트, 오류 없음 누가 말해 줄 수 있습니까? 내가 그것을 위해 무엇을해야합니까? 아래의 코드 :POP3 전자 메일 수신 인코딩 C#

POP3 pop = new POP3(); 
pop.Connect("userName", "password", "pop.126.com", 110);//smtp.126.com 
pop.DownloadMessages(); 
for (int i = 1; i < pop.Messages.Count; i++) 
{ 
    Email email = new Email(); 
    Message msg = pop.Messages[i]; 
    email.From = msg.From; 
    email.FromName = msg.FromName; 
    email.Body = msg.HTMLBody; 
    email.Title = msg.Subject; 
} 
+0

질문의 질을 향상 시키십시오. 더 많은 정보가 필요하며 이미 수행 한 연구를 보여주십시오. 감사합니다 – krisdyson

+2

내가 아는 한, C#에서 POP3에 대한 직접적인 지원은 없습니다. 이 'POP3'클래스는 어디에서 왔습니까? – ferc

답변

14

나는 당신의 코드가 다른 POP3 라이브러리로 전환을 넘어 작동하도록 당신이 사용하고있는 POP3 라이브러리 모르겠지만, 분명히 고장하고 "수정"을 할 수있는 건 아무것도 없어 모든 경우에 문자 세트를 올바르게 처리하는 유일한 라이브러리 인 MailKit 라이브러리 (대부분 Latin1은 처리하지만 CJK 문자 세트는 완전히 실패합니다)와 같은 라이브러리가 있습니다.

라틴어 1 (ISO-8859-1) 이외의 다른 클라이언트에서 대부분의 클라이언트가 손상되는 이유는 대부분의 전자 메일 라이브러리에는 문자열에서만 작동하는 파서가 있기 때문입니다. 메시지 데이터를 바이트에서 문자열로 변환하려면 System.Text.Encoding (대부분 ISO-8859-1을 선택)을 선택해야합니다. 전자 메일 메시지는 전자 메일 헤더를 US-ASCII로 제한하는 다양한 RFC에 설명 된 규칙을 따르지 만 클라이언트가이 규칙을 무시하는 것이 일반적 인 매우입니다.

다른 파서와 달리 MailKit의 전자 메일 파서는 바이트 스트림을 파싱하므로 메시지 구문 분석을 시작하기 전에 charset 변환이 필요하지 않습니다. 이를 통해 파서는 머리글과 본문에서 혼합 문자 집합을 올바르게 처리 할 수 ​​있습니다.

+6

일, 나는 이런 종류의 질문을 모니터링하고 아마 그들에게 대답하는 것이 가장 좋은 사람이 될 수 있도록 무료 MIT 라이센스 라이브러리를 작성하는 사람이있을 것이라고 기대합니다. 그들은 정확히이 물건에 대해 알고있는 사람들의 유형입니다. 그래서 ... 왜 그를 부셔 버릴까요? 규칙은 저주받을 것입니다. 그가 도움이되지 않는다면 개를 풀어 줘. 일부 판단을 사용하지만 어? –

+0

내 의견이 왜 삭제 되었습니까? – gianmt