流作为System.Net.Mail的附件是0字节

我有一个项目,我正在使用PDF生成器将文件发送给用户。我们希望给用户提供将该文件附加到电子邮件的选项,我们无法将Stream对象和Attachment逻辑一起使用。

我们从ABCpdf开始,它有两种保存方式:它可以保存到Stream,或者给它一个字符串,它会尝试保存到磁盘上的一个文件。我们两个都没有问题。

Stream stream = new MemoryStream();
myPdf.Save(stream);

在这一点上,一切都很酷 – 流有几千字节的数据,如果.Save()到一个文件,你将获得一个具有相同字节数的实际文件

所以我们现在附上一个电子邮件(初始化邮件对象后,设置为:和从:等):

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();

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....