2011-02-07 24 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生成コードを第3の方法にリファクタリングしてください。 – rsenna

+0

電子メールの送信には何を使用しており、添付ファイルには何が必要ですか。つまり、物理ファイルまたはファイルストリームが必要ですか? –

+0

ただのSmptClient、典型的な.Netは電子メールメカニズムを送ります。 – VajNyiaj

答えて

1

あなたのメールアドレス()メソッドでダウンロード()を呼び出すのではなく、PdfResultを返すためにヘルパークラスを追加しようとするかもしれません。

+0

私はすでにバイナリなので、ダウンロードアクションの同じ出力を使用することができるのが好きです。 – VajNyiaj

+0

両方のメソッドからヘルパーを呼び出します。それはMVCのパターンに忠実になります。両方のコールで同じ出力が得られます。 –