2012-03-04 2 views
6

나는 POP3 메일 가져 오기를 위해 C#으로 작성된 라이브러리 인 OpenPop을 사용하고 있었다. OK로 작동하는 것처럼 보이지만 명시 적으로 첨부 된 파일과 메일 내용의 차이를 만드는 방법을 알지 못했습니다. 이 라이브러리는 이들을 모두 "첨부 파일"로 취급합니다. 내 필요에 따라 HTML 메일 내의 사진을 첨부 파일로 간주하지 않습니다. 라이브러리 문서에서
:"실제"메일 첨부 파일과 html 메일을 구별하는 방법은 무엇입니까?

MessagePart는
경우, 첨부 파일로 간주됩니다 - 그것은 텍스트를 유지하지와 멀티 메시지 또는
하지 않다 - 그것은 내용 - 처리 헤더가 그 첨부 파일이라고 말합니다.

이론적으로는 (메일 프로토콜에 익숙하지 않아서) 적어도 무엇을해야합니까, 아니면 검색해야합니까?

답변

4

이미지 파일이 이메일의 본문 텍스트에서 참조되는지 확인할 수 있습니다. CSS 선택기에서 HTML을 구문 분석하고 img 또는 background-image 속성과 같은 태그를 찾아야합니다. 메시지 자체에서 이미지를 사용하지 않는 경우 메시지를 "정품"첨부 파일로 간주합니다.

3

나는 개발자를위한 OpenPop.NET입니다.

이것은 첨부 파일이 포함 된 이메일에 대한 배경 정보 일뿐입니다. 토니 포니의 대답은 갈 길입니다.

OpenPop.NET의 해당 부분을 구현할 때 첨부 파일을 첨부 파일과 구분하는 문제가있었습니다. MIME has a header, Content-Disposition은 특정 부분이 첨부 파일인지 여부를 알 수 있습니다.

예를 들어, 여기

Content-Disposition: inline 

이 보일 수 있습니다 좋은 방법 이메일의 HTML 부분에 대한 이미지를 수 여기에 첨부

Content-Disposition: attachment 

이며, 문제는 많은 이메일이다 클라이언트는 이러한 헤더를 추가하지 않으므로 OpenPop.NET과 같은 독자에게는 어려움이 있습니다. 우리는 이메일의 모든 HTML 부분을 조사하지 않고 어떤 이미지가 참조되는지 확인하기로 선택 했으므로 이제는 라이브러리 사용자가 결정합니다.

문제에 대한 좋은 해결책을 개발하면 프로젝트의 예제로 추가 될 수 있습니다.

+0

매우 자주있다. 'Content-Disposition : attachment'가 발생합니다. 많은 전자 메일 클라이언트가이를 사용하고 있습니다. 하지만 인라인은 비록 그것이 스펙이라 할지라도 여전히 빠져 있습니다. – Marcin

+0

@foens 그래, openpop.net 문서를 더 읽고 MIME에 대해 더 많이 읽는 동안, 나는 이것이 약간 까다로울 수 있음을 깨달았다. 어쨌든 명확히 해 주셔서 감사 드리며 사용 가능한 것을 생각해 내면 알려 드리겠습니다. 아이디어가 있다고 생각합니다. – Less

3

내가 이런 식으로 일을했고 작동하는 것 같다 : 내용 - 처리가 이메일 비어있을 때 사실

foreach (OpenPop.Mime.MessagePart fileItem in elencoAtt) 
{ 
    System.Net.Mime.ContentDisposition cDisp = fileItem.ContentDisposition; 

    //Check for the attachment... 
    if (!cDisp.Inline) 
    { 
     // Attachment not in-line 
    } 
    else 
    { 
     // Attachment in-line 
    } 
}