2017-12-03 6 views
-1

添付ファイル付きの電子メールを送信し、フォームからアップロードしたファイルから添付ファイルを取得します。電子メールは正しく送信されますが、添付ファイルを開くと常に空のファイルになります。コントローラからの添付ファイルを送信する際に間違いがありますか?ファイル内のデータは保存されないので、ファイルは送信時に空のままです。アップロードファイルasp.net mvcからの添付ファイルの空ファイル

MODEL:

public class Mail{ 
    public HttpPostedFileBase File { get; set; } 
} 

VIEW:

@using (Html.BeginForm("ButtonClick", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })){ 
    @Html.TextBoxFor(m => m.File, new { type = "file" }) 
} 

CONTROLLER:

public void ButtonClick(object sender, EventArgs e, Mail mail){ 
    mailMessage.Attachments.Add(new Attachment(mail.File.InputStream,mail.File.FileName)); 

} 
+0

MVCにイベントはありません(あなたの 'ButtonClick'メソッドは意味がありません) –

+0

これはちょうど私のコード。重要な問題を参照してください。ありがとう。 –

+0

必須の問題??あなたはあなたのフォームが投稿したコントローラメソッドを表示していません。誰があなたの作ったミスを推測すると思いますか? –

答えて

0

あなたのコードには間違いありません。すべて順調。実際には、ファイル、画像、または電子メールの何かを共有したいときはいつでも、ブロブやクラウドストレージに利用可能であることを確認し、メールにリンクを付けることが重要です。 電子メールで共有するファイル、実際にはローカルマシンサーバー上にあるファイル、またはプロジェクトを置いたファイルは、電子メールに入れて共有するという意味ではありません。

+0

私はあなたを完全に理解していません。私は別のコードを使用して、私のPCからあらかじめ定義されたパスからファイルを添付ファイルとして選択し、添付ファイルを正しく送信してメールで開くことができました。しかし、このコードでは、あらかじめ定義されたフォルダではなく、任意のフォルダからファイルを選択したいのですが、メール添付ファイルで受信するファイルには正しい名前が付けられていますが、空のファイルです。 –

0

アタッチメントコンストラクタにファイル名だけを渡してみてください。 HttpPostedFileBaseファイルを使用すると、ファイル名を取得してその値を渡して正常に動作するかどうかを確認できるはずです

+0

このようにしても添付ファイルを送信しないので、入力ストリームを最初のパラメータとして渡す必要があります。ファイル名は2番目のパラメータです。私が理解できないのは、ファイルが空である理由です。どういうわけかファイルの値をどこかにコピーすべきですか? –

関連する問題