문제

이메일 메시지를 처리하고 전달하는 AA C# 프로그램을 작성하고 있습니다. POP3 라이브러리와 마임 파서가 있는데 마임 트리를 System.Net.Mail.MailMessage.

다른 마임 부품을 AlternateView에스, LinkedResource모래 Attachment에스?

편집하다: 모든 메일 클라이언트 (보내기 및 수신)와 함께 작동합니다.

도움이 되었습니까?

해결책 3

지금은 a로 복사하고 있습니다 Content-Disposition 그렇지 않습니다 inline, 또는 텍스트 나 이미지 이외의 마임 범주로 Attachment, 아무것 inline, 또는 마임 범주가있는 모든 것 Image a LinkedResource HTML보기 또는 마지막보기 및 기타 AlternateView. (아직 테스트하지 않았습니다)

다른 팁

10,000 피트의 개요에서 여기에 내가 할 일이 있습니다.

마임 부품을 나무에 평평하게하십시오. 각 부분에 1 개와 단 1 부 (다중 공사/관련 부모가 아닌)가 있는지 확인하십시오.

  1. 신체의 다음 조건을 확인하십시오.

    1. 첫 번째 부분이 HTML 인 경우 메시지 본문으로 설정하십시오.

    2. 첫 번째 부분이 일반 텍스트이고 두 번째 부분이 ~ 아니다 HTML, 일반 텍스트 부분을 메시지 본문에 설정하십시오.

    3. 첫 번째 부분이 평범하고 두 번째 부분이 HTML 인 경우 2 개의 대체보기를 작성하십시오. *** 이것은이 부분들 중 어느 것도 내용 지분을 가지고 있지 않다고 가정합니다. 부착 헤더.

  2. 나머지 부품을 통해 루프. 다른 모든 것을 첨부 파일로 추가하십시오

    1. Content-ID 헤더 세트가있는 이미지

    2. 컨텐츠로 위치 헤더 세트가있는 이미지.

      해당 헤더 중 하나가 존재하는 경우 해당 이미지를 LinkedResource로 추가합니다 (실제로 HTML 본체 부품이있는 경우에만).

그것은 당신을 시작하고 정상 이메일의 약 99%를 다룰 것입니다.

AlternateView의 멀티 파트/대체 부분에 포함 된 텍스트 부분 (텍스트/일반, 텍스트/HTML 등)을 매핑하십시오. 또한 단일 텍스트 부품으로 구성된 메시지의 경우를 충족시키기 위해 부모 유형에 관계없이 대체 뷰에 직면 한 첫 번째 텍스트 부분을 맵핑하십시오.

내용화 헤더에 따라 나머지 부품을 첨부 파일 또는 링크드 레스 소스에 매핑하십시오.

첨부 파일의 내용화로 해당 부품을 첨부 파일에 매핑하십시오.

인라인의 내용화 또는 컨텐츠 방지 헤더가없는 부분을 링크드 레스 소스에 맵핑하십시오. 이 마지막 단계는 Content-ID가 특정 텍스트 부분에서 언급 된 내용 -ID와 일치하는지 확인함으로써 Finess가 될 수 있지만 실제 목적으로 이러한 방식으로 생성 된 모든 링크드 드레 어스는 첫 번째 텍스트/HTML AlternateView에 속한다고 가정 할 수 있습니다. (또는 텍스트 유형/html의 대체 뷰가없는 경우 생성 된 마지막 대체 뷰).

최선의 방법이 아닐 수도 있지만 '원시'이메일을 받고 새로운 이메일로 교체하려고합니다.

흠, system.net.mail.mailmessage를 절대적으로 사용해야합니까?

System.net.mail.MailMessage는 MIME가 제공하는 것 중 매우 작은 하위 집합 만 제공합니다. 따라서 Mime Parser가 모든/대부분의 표준 기능을 지원하는 것을 목표로한다면 MIME 메시지를 Mail Message에 복사하려는 목표는 최악의 경우 가장 어려우고 불가능합니다. POP3 액세스를 제공하는 라이브러리도 SMTP 액세스를 제공하지 않습니까? 그렇다면 System.net.mail.MailMessage를 혼자두고 Thrid Party Library가 제공하는 모든 것을 가지고 가십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top