2011-02-07 172 views
1

我有一个控制器操作,可以生成PDF并将其传输到客户端,但也希望有一个控制器操作,将该PDF下载操作的输出作为附件发送。我知道如何发送电子邮件,问题是我如何使用/捕获MVC下载动作来处理我的电子邮件附件。ASP.NET 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 
} 
+1

如果你已经拥有了你的`PdfBuilder`,你为什么不在发送邮件时再打电话......?如果你不想复制代码,只需将pdf生成代码重构为第三种方法即可。 – rsenna 2011-02-07 18:26:19

+0

你用什么发送电子邮件,需要什么附件。那是需要物理文件还是文件流? – 2011-02-07 18:48:49

回答

1

你可以尝试添加一个辅助类返回,而不是在你的邮箱()方法调用下载()的PdfResult。