2011-09-09 2 views
1

Umbraco CMSには、.NETのMailMessageを使用して電子メールを作成して送信するためのインラインC#スクリプトが含まれています。エンドユーザーは添付ファイルとして電子メールに追加されるファイルをアップロードできる必要があります。剃刀フォーム - 電子メールへのアップロードと添付

私の知る限り、これを行う唯一の方法は、ディスクにアップロードしてディスクから添付ファイルを読み込むことです。

ディスクに書き込まずにアップロードして添付することはできますか?コードビハインドやコントローラはないことに注意してください。これはすべてインラインの剃刀ロジックです。

答えて

2

あなたははMailMessageのAttachmentコンストラクタにアップロードされたファイルからInputStreamを渡す必要があります。

if(IsPost && Request.Files.Count > 0){ 
    var file = Request.Files[0]; 
    var fileName = file.FileName; 
    var attachment = new Attachment(file.InputStream, fileName);  
    ... 
    ... 

(あなたがするFileUploadヘルパーを使用していない限り)あなたはPOSTに、フォームのメソッドを設定していることを確認し、enctypeを追加属性がmultipart/form-dataで、input type=filename属性を指定していることを確認してください。

+0

ありがとうございます。私はRequest.Filesを見ようとしましたが、それは私に0のカウントを与えています。 – Savage

+0

これ以上の情報がなければ、その理由を診断することは困難です。私が確認したことを再確認してください。 –

+0

フォームの入れ子に問題がありました。いったん私がフォームタグを騙してしまえば、あなたのコード例は正常に動作しました。 – Savage

0

私は剃刀でどれだけ可能かはわかりませんが、ディスクに保存せずに電子メールにアップロードして添付することは可能です。アップロードコントロールのFileUpload.FileContent propertyから取得したストリームを使用します。それをMailMessage Attachementのthis constructorに渡してください。

また、コードビハインドは使用しないでください。

+0

私はダウンロードしたかみそりのオールインワンの連絡フォームでCMSコンテンツシステムを使用しているため、コードビハインドはありません。私は車輪の再発明を避けています。 – Savage

関連する問題