【问题标题】:ASP.NET MVC send email attachmentASP.NET MVC 发送电子邮件附件
【发布时间】: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


【解决方案1】:

您可以尝试添加一个帮助类来返回 PdfResult,而不是在您的 Email() 方法中调用 Download()。

【讨论】:

  • 我希望能够只使用该下载操作的相同输出,因为它已经是二进制的。
  • 您可以从这两种方法中调用帮助程序。那会更好地遵守 MVC 模式。两次调用都会收到相同的输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 2014-10-22
相关资源
最近更新 更多