2009-05-14 9 views
0

メールの添付ファイルに問題があります。ファイルアップロードのコントロールを使用して、ローカルマシンからファイルの のパスを取得しています。メール添付の問題

これは、適切なパスを提供していますが、「無効なメール添付ファイル」というエラーを示すフォルダからファイルをアタッチしている間に発生します。続き

protected void sndmail_Click(object sender, EventArgs e) 
    { 
     objmail = new MailMessage(); 
     objmail.From = txt_sender.Text; 
     objmail.To = txt_recipient.Text; 
     objmail.Cc = txt_cc.Text; 
     objmail.BodyFormat = MailFormat.Text; 
     objmail.Priority = MailPriority.High; 
     objmail.Subject = txt_sub.Text; 
     objmail.Body = txt_body.Text; 
     SmtpMail.SmtpServer = "localhost"; 
     SmtpMail.Send(objmail); 
     Response.Write("Mail send successfully..."); 

    } 


    protected void attch_Click(object sender, EventArgs e) 
    { 
     string mypath = System.IO.Path.GetFullPath(FileUpload1.FileName); 
     MessageBox.Show(mypath); 
     MailAttachment attch = new MailAttachment(mypath); 

     objmail.Attachments.Add(attch); 
    } 

あなたは、私はこのエラーを見ているなぜ私がうまく助けることができます。..コードのですか?メールメッセージを作成しているコードがサーバー上で動作している間

+0

ウィルこのコード今、この行を.....使用して、その作業ファイル....

objmail.Attachments.Add(new MailAttachment(FileUpload1.PostedFile.FileName)); objmail.From = txt_sender.Text; objmail.To = txt_recipient.Text; objmail.BodyFormat = MailFormat.Text; objmail.Priority = MailPriority.High; objmail.Subject = txt_sub.Text; objmail.Body = txt_body.Text; SmtpMail.SmtpServer = ""; SmtpMail.Send(objmail); Response.Write("Mail send successfully..."); 

全く仕事?添付ファイルボタンのクリックイベントでは電子メールオブジェクトを参照しますが、クリックイベントを送信すると新しい電子メールが作成され、送信されます。 –

答えて

0

objmail = new MailMessage(); (= "" SmtpMail.SmtpServer;)alllの返信用

ありがとう...

1

のFileUploadコントロールのFileNameプロパティは、あなたにクライアント上のファイルの名前を与えます。最初にファイルをサーバーに保存してから、メール添付ファイルを作成するときにそのパスを参照する必要があります。

string fileNameOnServer = Path.Combine("<some writeable path on your server>", FileUpload1.FileName); 
FileUpload1.SaveAs(fileNameOnServer); 

// now you can user fileNameOnServer to attach the file to a mail message 
objMail.Attachments.Add(new Attachment(fileNameOnServer)); 
+0

それは機能していません.. –

1

objmail.Attachments.Add(attch);コードが実行されると、objmail変数がインスタンス化されていないので、あなたがエラーを取得しています。

このコード行はattchattch_Clickメソッド内のローカル変数であるとsndmail_Click方法ではアクセスできないという事実を気にしてくださいobjmail = new MailMessage();

sndmail_Click方法で記述する必要があります。この変数を両方のメソッドで使用できるようにする必要があります。したがって、objmail変数を宣言した場所とともに宣言してください。

編集

フレドリックは彼の答えで概説したようにしかし、あなたはattch_Click方法でとsndmail_Click方法でサーバーにファイルを保存する必要がobjmail.Attachmentsコレクションに保存したファイルを追加します。

+0

まだ同じエラーが発生していません。 –

+0

@Aarsh - あなたはフレッドリックと私の答えの両方を組み合わせる必要があります。 (Fredが正しく言及したように)attch_Clickメソッドとsndmail_Clickでサーバーにファイルを保存し、保存されたファイルを選択し、SmtpMail.Send(objmail)を呼び出す前にobjmail.Attachmentsコレクションに追加する必要があります。 –

関連する問題