2017-08-04 53 views
-7
private static void SendMailTest() 
{ 
    var dto = qEmail.Dequeue();  
    if (dto.Attachment != null && dto.Attachment.Length > 0) 
    { 
     for (int i = 0; i < dto.Attachment.Length; i++) 
     { 
      if (dto.Attachment[i] != null) 
       { 
       MemoryStream ms = new MemoryStream(); 
       dto.Attachment[i].ContentStream.CopyTo(ms);      
       byte[] byteArr = ms.ToArray(); 
       ms.Flush(); 
        ms.Dispose(); 
       } 
      } 
     } 
} 

第二次不工作不復制在dto.Attachment [i] .ContentStream.CopyTo(ms);我已經在一個循環中設置了這個功能,但問題只在第一時間工作

+0

'不工作'是什麼意思?你有例外嗎? MemoryStream是空的嗎?這個queue有多個元素嗎? –

+0

使用調試器進行調試 –

+0

確切的錯誤是什麼? – umasankar

回答

0

我不知道這是否是你的問題,但我記得當附件是由某些類型的軟件生成的PDF時,它不喜歡MemoryStream(因爲我從來沒有理解的 - 如果我記得正確它涉及水晶報表的後續版本)。但是,我發現它像Stream一樣運行良好。所以我建議你嘗試類似的東西:

using (BinaryReader br = new BinaryReader(dto.Attachment[i].ContentStream)) 
{ 
    byteArr = br.ReadBytes((int)dto.Attachment[i].ContentStream.Length); 
} 

這是我的最後一招,並且取決於準確報告長度。但它總比沒有好!

相關問題