我有一个项目,我正在使用 PDF 生成器将文件发送给用户。我们希望为用户提供将此文件附加到电子邮件的选项,但我们在同时使用 Stream 对象和附件逻辑时遇到了问题。
我们从 ABCpdf 开始,它有两种保存方法:它可以保存到 Stream,或者如果你给它一个字符串,它会尝试保存到磁盘上的文件。我们俩都做到了,没问题。
Stream stream = new MemoryStream();
myPdf.Save(stream);
此时一切都已经很酷了 -stream
有几千字节的数据,如果您 .Save() 到文件,您会得到一个具有相同字节数的实际文件。
因此,我们此时附加到一封电子邮件(在初始化邮件对象、设置“To:”和“From:”等之后):
mail.Attachments.Add(new Attachment(stream, "myPdf.pdf"));
mail.Send();
...这让我们收到了一封 0 字节的电子邮件,但文件名正确。
我在网上找到的所有示例都使用 StreamReader 或 StreamWriter 或 Flush() 或其他东西。它总是看起来比简单地传递 Stream 更复杂,但可能只复杂一两行。这些示例都不是以 Stream 开头的 - 他们总是试图将数组转换为 Stream 来向您展示这是多么容易,或者从磁盘中获取文件(我们做不到,这就是我们感到兴奋的原因)使用流)。
不管怎样,如果有人能解释我做错了什么或者我应该做什么,我将非常感激。谢谢。
猜测...在发送 nit 之前将数据流返回到开头
// Set the position to the beginning of the stream.
stream.Seek(0, SeekOrigin.Begin);
mail.Attachments.Add(new Attachment(stream, "myPdf.pdf"));
mail.Send();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)