【发布时间】:2011-02-07 18:19:58
【问题描述】:
我有一个控制器动作,它生成 PDF 并将其流式传输到客户端,但也希望有一个控制器动作,该控制器动作将该 PDF 下载动作的输出作为附件通过电子邮件发送。我知道如何发送电子邮件,问题是如何为我的电子邮件附件使用/捕获 MVC 下载操作。
伪代码:
public PdfResult Download(int? someId)
{
var pdfBuilder = new pdfBuilder();
var pdfStream = pdfBuilder.StreamPdf(someId);
return new PdfResult("someId.pdf", "application/pdf", pdfStream);
}
public ActionResult Email(int? someId)
{
var pdfStream = View("Download", someId);
var attachment = new Attachment(pdfStream, "someId.pdf");
//...send email code
}
【问题讨论】:
-
如果你已经有了你的
PdfBuilder,为什么不在发送电子邮件时再次调用它......?而如果不想重复代码,只需将pdf生成代码重构为第三种方法即可。 -
您使用什么发送电子邮件以及附件需要什么。那就是它需要物理文件还是文件流?
-
只是 SmptClient,典型的 .Net 发送电子邮件机制。
标签: asp.net-mvc stream email-attachments