我有一个项目,正在使用PDF生成器将文件发送给用户。我们希望为用户提供将此文件附加到电子邮件的选项,并且我们无法同时使用Stream对象和Attachment逻辑。
我们从ABCpdf开始,它有两种保存方法:它可以保存到Stream中,或者如果给它一个字符串,它将尝试保存到该磁盘上的文件中。我们都没问题。
Stream stream = new MemoryStream();
myPdf.Save(stream);
此时一切都很酷-
stream
拥有几千字节的数据,如果将.Save()保存到文件中,则将获得具有相同字节数的实际文件。因此,我们此时附加到电子邮件(初始化邮件对象,设置“收件人:”和“发件人:”等之后):
mail.Attachments.Add(new Attachment(stream, "myPdf.pdf"));
mail.Send();
...这使我们尽可能接收一封0字节但文件名正确的电子邮件。
我在网上找到的所有示例都使用StreamReader或StreamWriter或Flush()之类的东西。它总是看起来比简单地传递一个Stream更复杂,但是也许只复杂了一两行。这些示例都不是从Stream开头的,它们总是试图将数组变成Stream来向您展示这是多么容易,或者从磁盘中抓取文件(这是我们无法做到的,这就是为什么我们很兴奋的原因。使用流)。
无论如何,如果有人能解释我在做什么或应该做什么,我将非常感激。谢谢。
最佳答案
猜猜...在发送nit之前,返回dat流到开头
// Set the position to the beginning of the stream.
stream.Seek(0, SeekOrigin.Begin);
mail.Attachments.Add(new Attachment(stream, "myPdf.pdf"));
mail.Send();
关于.net - 作为System.Net.Mail附件的流为0字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1317236/