2017-08-04 29 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); 
} 

这是我的最后一招,并且取决于准确报告长度。但它总比没有好!

相关问题