2017-05-02 7 views
2

私は数日から解決策を探していました。私は.netプログラマではありませんが、コードを使って誰かを助けようとしています。私は.csファイル(電子メールの添付ファイルとしてHtml入力ファイルの値を送信する方法c#.net

<form method="post" enctype="multipart/form-data" > 
     <label for="attachAdd">Attach copies of Identification:</label><span>(REQUIRED)</span> 

     <input type="file" id="attachAdd" name="attachAdd" class="file-upload no-print" size="60" /> 
    </form> 

(私は短いコードを維持するために、任意の他のタグを削除した)HTML form.The HTMLフォームからファイルは、以下のように見える=入力タイプを介してアップロード任意のファイルを添付する必要があります私のC#コード)ファイルには、次のようになります。

using System; 
    using System.Collections.Generic; 
    using System.Globalization; 
    using System.Net.Mail; 
    using System.Web.UI; 
    using System.Data; 

    namespace Corp.SP.NewForms 
    { 
     public class ProcessForms : ParentForm  
     { 
      public ProcessForms(string formHTML, EFormMetaData formMetaData, Page requestPage) 
       : base(formHTML, formMetaData, requestPage) 
      { 
       EFormHTML = formHTML; 
       EFormMetaData = formMetaData; 
       EFormPage = requestPage; 
      }  
     public override string ProcessEmail(EFormMetaData formInfo, Page page) 
     { 
      string email = base.ProcessEmail(formInfo, page); 


      //Process body header 
      email = email.Replace("{FORMURL}", new UriBuilder(page.Request.Url) { Port = -1 }.ToString()); 
      email = email.Replace("{EMAILTOADDRESS}", formInfo.EmailToAddress); 
      email = email.Replace("{EMAILSUBJECT}", formInfo.EmailSubject); 

     string attachAdd = page.Request.Form["attachAdd"]; 
     System.Net.Mail.Attachment attachment; 
     attachment = new System.Net.Mail.Attachment(attachAdd); //ERROR 
     email.Attachments.Add(attachment);     

      return email; 
     } 
     public override void SendEmail() 
     { 
       base.SendEmail(); 
     } 
    }} 

添付ファイルを追加するために使用されるコードが正しくありませんが、私はthis question of Stackoverflowにそれを見つけたかのように私は感じています。

string attachAdd = page.Request.Form["attachAdd"]; 
    System.Net.Mail.Attachment attachment; 
    attachment = new System.Net.Mail.Attachment(attachAdd); //ERROR 
    email.Attachments.Add(attachment);     

コードが添付(文字列が「添付ファイル」とない拡張メソッド「添付ファイル」の定義が含まれていない下に赤い線との誤差を示すタイプ「文字列」の第1引数を受け入れるが見出すことができました( usingのディレクティブまたはアセンブリの参照がありません))次の行にあります。

email.Attachments.Add(添付);

このコードを修正する方法については、誰でも光を当てることができます。私たちはSharePoint Eformsを使用しています。

+1

以下のように

てみ' email'は、文字列です。文字列に添付ファイルを追加することはできません。おそらく電子メールメッセージを作成してそれに添付したいと思うでしょう。あなたがそれを行う方法について投稿したリンクを参照してください。 –

答えて

0

電子メールにHttpPostedFileを添付します。ストリームに変換する必要があります。

あなたのコードの 'email'も文字列です。添付ファイルはありません。 MailMessage型でなければなりません。エラーはそれが財産 `Attachments`を持っていないと言うよう

HttpPostedFile attachAdd = page.Request.Form["attachAdd"]; 
var email = new MailMessage(); 
string strFileName = 
     System.IO.Path.GetFileName(attachAdd.PostedFile.FileName); 
     Attachment attachFile = 
     new Attachment(attachAdd.PostedFile.InputStream, strFileName); 
     email.Attachments.Add(attachFile); 
+0

こんにちは、私は自分のコードビットをあなたのものに置き換えました。今はStringには "PostedFile"と拡張メソッドの定義が含まれていません。 "PostedFile"タイプ 'String'の最初の引数を受け入れることができますまたはアセンブリ参照 – Shrilekha

+0

attachAddは文字列ではなく、入力ファイルのID .aspx page..try page.Request.Form ["attachAdd"] – Sachu

+0

文字列strFileName = System.IO.Path.GetFileName(page.Request添付ファイルattachFile =新しい添付ファイル(page.Request.Form ["attachAdd"]。PostedFile.InputStream、strFileName); エラーは引き続きpostsFileにあります – Shrilekha

関連する問題