2017-01-24 16 views
-1

我處理電子郵件就好了。現在,我遇到了一些PDF格式的電子郵件,它們必須是內聯的,因爲它們不會被.Attachments注意到。這是我的代碼。我無法得到它。請幫忙。謝謝!我的C#程序不下載內聯圖片

var message = mainFolder.GetMessage(i - 1); 

eCount++; 
// Get specifics of email 

var attachments = message.Attachments.ToList(); 

int attCnt = attachments.Capacity; 

string preChk = message.From.ToString(); 

var msgMsg = new MimePart(); 

var att2 = new List<MimePart>(); 

var mp2 = new List<Multipart>(); 

var iter = new MimeIterator(message); 

int mpCnt = 0; 


if (attCnt == 0) 
{ 

    while (iter.MoveNext()) 
    { 
     mpCnt += 1; 
     var mp = iter.Parent as Multipart; 

     var prt = iter.Current as MimePart; 

     if (mp != null && prt != null && prt.IsAttachment) 
     { //Check if an attachment slipped through 

      mp2.Add(mp); 

      att2.Add(prt); 
     } 
    } 
} 

//如果我擴大iter.MoveNext,我可以深入到圖像 iter.MoveNext

+0

這是很棒的代碼(對於我的口味來說有點過多的空白,但在合理的範圍內),但是我們應該如何在沒有運行此類郵件的情況下重現您的問題? –

+0

很抱歉有空白。這是我做過的第一件代碼事情,如果我沒有雙倍的空間,然後所有的線都連接在屏幕上。我將不得不在未來搗亂.....現在到電子郵件。好問題!由於保密性,我實際上無法使用我的製作電子郵件,但我明天可能會做一個屏幕截圖(即將完成的一天),並告訴你它們可以在哪裏看到。然後也許嘗試用我自己的附件再現問題。我知道,很複雜。謝謝你的幫助! –

+0

911擋道了。我可能已經知道了......會讓你知道 –

回答

0

我沒弄明白,我幾乎消除了上面的所有代碼,並將其濃縮到僅幾條線。在我的var附件中,如果它= 0,那麼我知道它是內聯的。我這樣做:

var bd = message.BodyParts.ToList<MimeKit.MimeEntity>(); 

通常,我們在附件循環中執行MimeKit.Mimepart附件。我發現了一些事情。 Do var mp = bd.ElementAt(inAttCnt - 1); var ma2 = mp.ContentType.Name;檢查ma2 <> null。不要做bd.Remove你會拋出異常!該foreach將照顧它!希望有所幫助。