2017-05-02 1 views
2

나는 며칠이 지나서 해결책을 찾고있었습니다. 나는 .net 프로그래머가 아니지만 누군가 코드 작성을 도우려고 노력하고있다. 나는 form.The HTML 형식은 (I 짧은 코드를 유지하기 위해 다른 태그를 제거한) 다음전자 메일에 첨부 파일로 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처럼 보이는 HTML에서 모든 입력 방식을 통해 업로드 된 파일 = 파일을 첨부 할 필요가) 파일은 다음과 같습니다

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

코드는 첨부(문자열 "첨부 파일"없이 확장 메서드 "첨부 파일"에 대한 정의를 포함하지 않는 아래에 빨간 선으로 오류를 보여줍니다 유형 '문자열'의 첫 번째 인수를 받아들이는 것은 볼 수 있습니다 (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

안녕하세요, 당신과 내 코드 비트를 바꾼 지금은 문자열에 "게시 된 파일"에 대한 정의가없고 확장 메서드가없는 "PostedFile"유형 'String'의 첫 번째 인수를 수락 할 수 있습니다 (사용 지시문이나 또는 어셈블리 참조 – Shrilekha

+0

attachAdd는 .aspx 페이지에서 입력 형식 파일의 ID가 아닌 문자열입니다 .try page.Request.Form [ "attachAdd"] – Sachu

+0

문자열 strFileName = System.IO.Path.GetFileName (page.Request)을 추가했습니다. 첨부 파일 attachFile = 새 첨부 파일 (page.Request.Form [ "attachAdd"]. 게시 된 파일 _InputStream, strFileName) postedFile에 오류가 지속됩니다. – Shrilekha