2012-03-04 30 views
6

Tôi đã rối tung xung quanh với OpenPop, một thư viện được viết bằng C# để tìm nạp thư POP3. Dường như làm việc OK, nhưng tôi đã không hoàn toàn có được ý tưởng làm thế nào để tạo sự khác biệt giữa các tệp đính kèm rõ ràng với thư và các nội dung như hình ảnh trong thư nội dung HTML. Thư viện này coi tất cả chúng là "tệp đính kèm". Đối với các nhu cầu của tôi, tôi sẽ không xem xét một hình ảnh trong thư HTML đính kèm.
Từ các tài liệu thư viện:cách phân biệt tệp đính kèm "thực" với các bức ảnh trong thư html?

Một MessagePart được coi là một tập tin đính kèm, nếu
- nó không được giữ văn bản và không phải là một thông điệp nhiều phần dữ liệu hoặc
- nó có một tiêu đề Content-Disposition rằng nói rằng đó là tệp đính kèm

Tôi nên làm gì hoặc tìm kiếm, ít nhất là về mặt lý thuyết (vì tôi không thực sự quen thuộc với giao thức thư)?

Trả lời

4

Bạn có thể kiểm tra xem tệp hình ảnh có được tham chiếu trong phần nội dung của email hay không. Bạn sẽ cần phải phân tích cú pháp HTML và tìm các thẻ chẳng hạn như img hoặc thuộc tính background-image trong bộ chọn CSS. Nếu hình ảnh không được sử dụng bởi chính thư, thì hãy coi nó là tệp đính kèm "chính hãng".

3

Tôi là nhà phát triển trên OpenPop.NET.

Đây chỉ là một số thông tin cơ bản về email chứa tệp đính kèm. Câu trả lời của Tony the Pony là con đường để đi.

Tôi cũng gặp sự cố khi phân biệt tệp đính kèm với các tệp không đính kèm khi tôi triển khai phần đó của OpenPop.NET. MIME has a header, Content-Disposition có thể cho biết một phần nào đó có phải là phần đính kèm hay không.

Ví dụ, đây là một tập tin đính kèm

Content-Disposition: attachment 

và đây có thể là một hình ảnh đến một phần html của email

Content-Disposition: inline 

Làm thế nào đẹp này có vẻ, vấn đề là nhiều email khách hàng không thêm các tiêu đề này, gây khó khăn cho người đọc như OpenPop.NET. Chúng tôi chọn không xem xét tất cả các phần HTML của email để xem hình ảnh nào đang được xem xét, và do đó, điều này giờ đây tùy thuộc vào người dùng của thư viện.

Nếu bạn phát triển một giải pháp tốt cho vấn đề, nó có thể được thêm làm ví dụ cho dự án.

+0

Trong thực tế có rất thường khi nội dung bố trí trống trong email. 'Content-Disposition: attachment' xảy ra. Rất nhiều khách hàng e-mail đang sử dụng nó. Nhưng nội tuyến, ngay cả khi nó là spec ra nó vẫn còn thiếu. – Marcin

+0

@foens Vâng, trong khi đọc tài liệu openpop.net và đọc thêm về MIME, tôi nhận ra rằng điều này có thể hơi phức tạp một chút. Cảm ơn cho làm rõ anyway, và nếu tôi đến với một cái gì đó có thể sử dụng, tôi sẽ cho bạn biết, tôi nghĩ rằng tôi đã có một số ý tưởng. – Less

3

tôi đã thực hiện nó theo cách này và có vẻ như để làm việc:

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 
    } 
} 
Các vấn đề liên quan