2010-08-10 4 views
1

나는 전자 메일을 파일로 인쇄하려고하는데이 모든 것이 발생합니다. 어떻게하면 메시지 본문을 아스키로 파싱 할 수 있습니까?POP3 메일 인코딩

 
Mime-Version: 1.0 
Content-Type: text/plain; 
    charset="utf-8" 
Content-Transfer-Encoding: base64 
X-Spam-Status: No, hits=0.2 required=5.0 tests=AWL,NO_REAL_NAME autolearn=no 
    version=2.64 
Status: 
DQpNZXNzYWdlIG1lZXRzIEFsZXJ0IGNvbmRpdGlvbg0KMjAxMC0wOC0xMCAxNTozODoxNiBkZXZp 
Y2VfaWQ9RkcxMDBBMzkwNzUwNzAwOCBsb2dfaWQ9MDEwNDAzMjAwNSB0eXBlPWV2ZW50IHN1YnR5 
cGU9YWRtaW4gcHJpPWFsZXJ0IHVzZXI9InJvb3QiIHVpPVNTSCg0MS4yMzcuMTA2LjI1MCkgYWN0 

답변

3

메시지 내용은 base64로 인코딩됩니다. 당신이 그것을 디코딩하는 경우, 다음과 같은 결과를 얻을 것이다 :

메시지는 경고 조건을 충족 2010-08-10 15시 38분 16초 DEVICE_ID = FG100A3907507008 log_id = 0104032005 유형 = 이벤트 하위 유형 = 관리자 PRI = 사용자는 경고 = "루트"을 Heres UI = SSH (41.237.106.250) 법

base64로 디코딩 방법의 예 :

public string DecodeBase64(string str) 
{ 
    byte[] buff = Convert.FromBase64String(str); 
    return System.Text.Encoding.UTF8.GetString(buff); 
} 
,824,321 0

편집 : 다음은 메시지 내용 만 디코딩하는 방법입니다. 나는 그것을 테스트하지 않았지만, 트릭을 확실히 할 것이라고 확신했다.

public static string DecodeEmail(string contents) 
{ 
    string[] delimiter = new string[] { "Status:" }; 
    string base64string = contents.Split(delimiter, StringSplitOptions.None)[1]; 
    return DecodeBase64(base64string); 
} 
0

메시지는 Base64를 사용하여 인코딩됩니다. 예제 코드를 사용하여 C# Base 64 디코더 here을 호출 할 수 있습니다.

전자 메일 MIME 문서 인코딩에 일반적으로 사용되는 Base64 인코딩은 RFC 3548

에 자세히 설명되어 있습니다.
관련 문제