我已经在一个循环中设置了这个功能,但问题只在第一时间工作
问题描述:
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);我已经在一个循环中设置了这个功能,但问题只在第一时间工作
答
我不知道这是否是你的问题,但我记得当附件是由某些类型的软件生成的PDF时,它不喜欢MemoryStream(因为我从来没有理解的 - 如果我记得正确它涉及水晶报表的后续版本)。但是,我发现它像Stream一样运行良好。所以我建议你尝试类似的东西:
using (BinaryReader br = new BinaryReader(dto.Attachment[i].ContentStream))
{
byteArr = br.ReadBytes((int)dto.Attachment[i].ContentStream.Length);
}
这是我的最后一招,并且取决于准确报告长度。但它总比没有好!
'不工作'是什么意思?你有例外吗? MemoryStream是空的吗?这个queue有多个元素吗? –
使用调试器进行调试 –
确切的错误是什么? – umasankar