2017-05-02 39 views
2

我一直在尋找一個解決方案,因爲幾天。我不是一個.net程序員,但我正在努力幫助別人解決他們的代碼問題。我需要從一個html form.The HTML表單如下所示(我已刪除任何其他標記,以保持代碼的短)如何發送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> 

我的C#代碼(附加的.cs通過輸入類型上傳任何文件=文件)文件如下所示:

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);     

的代碼顯示錯誤與下附件(String不包含定義爲「附件」,並沒有擴展方法「附件」紅線接受類型「字符串」的第一個參數可以發現(你是否遺漏了使用指令或裝配參考))在下面的行中。

email.Attachments.Add(attachment);

任何人都可以闡明我如何糾正這段代碼。我們使用SharePoint Eforms。

+1

'email'是一個字符串,如錯誤說,它沒有財產'Attachments'。您不能嘗試將附件添加到字符串。您可能想要創建一封電子郵件並附加到該郵件。請參閱您發佈的鏈接,瞭解如何操作。 –

回答

0

將HttpPostedFile附加到電子郵件。您需要將其轉換爲Stream。

另外在你的代碼中,'email'是一個字符串。它沒有屬性附件。它應該是類型MailMessage。

嘗試如下

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」的定義,並且沒有找到接受第一個參數類型'String'的擴展方法「PostedFile」(你是否缺少using指令或或者一個程序集引用 – Shrilekha

+0

attachAdd不是字符串,它是.aspx頁面中的輸入類型文件的id page.try page.Request.Form [「attachAdd」] – Sachu

+0

我添加了字符串strFileName = System.IO.Path.GetFileName(page.Request .Form [「attachAdd」]。PostedFile.FileName); Attachment attachFile = new Attachment(page.Request.Form [「attachAdd」]。PostedFile.InputStream,strFileName); postedFile仍存在錯誤 – Shrilekha

相關問題