2015-08-04 3 views
-1

У нас есть форма в нашей корпоративной интрасети, где пользователи помещают данные, а затем нажимают на данные отправки и данные собираются в электронное письмо и отправляются определенному списку пользователей. У нас есть site.aspx.cs, где я указываю, какие данные отправляются по электронной почте.Загрузить файл в форму на интрасети и по электронной почте

Мы добавляем поле, в котором пользователь может загружать файл при создании формы, но у меня возникают проблемы с добавлением этого файла .cs, чтобы он мог отправлять данные по электронной почте.

Это HTML, где я создал поле и кнопку Загрузить

<body> 
<div class="containerContent"> 
    <div class="content"> 
     <div class="outer4ColLeft"> 
     <ul class="subnav"> 
     <li> 
      <a href="../corporate_resources.aspx">Documents</a> 
     </li> 
      <li> 
      <a href="../mission_ethics.aspx">Mission &amp; Ethics Statements</a> 
      </li> 
      <li> 
      <a href="../history.aspx">History</a> 
      </li> 
      <li> 
      <a href="../associate_profiles.aspx">Associate Profiles</a> 
      </li>   
     <li class="activeSub"> 
      <a href="../corporate_form.aspx">Corporate Forms</a> 
     </li>     
     </ul> 
<!--#include file="../includes/quicklinksForm.aspx"-->  
     </div> 
     <div class="outer12ColRight"> 
      <h1> 
       <span></span> 
       <img height="45" alt="Odd Occurrence Report" src="../images/corporate/h1_oddOccurrence.jpg" /> 
      </h1> 
      <div class="formContent"> 

<form id="form1" class="forms" runat="server"> 
    <asp:Panel ID="formPanel" Visible="true" runat="server"> 
     <h3>Note: An odd occurrence is any unplanned interruption</h3> 
      <asp:ValidationSummary ID="oddValidationSummary" class=".redText" runat="server" Font-Bold="True" /> 
        <fieldset> 
         <legend>General</legend> 
         <div class="profileRow1Col1"> 
          <p> 
           <asp:RequiredFieldValidator ID="valPartNumber" runat="server" ControlToValidate="txtPartNumber" ErrorMessage="Part Number is required.">*</asp:RequiredFieldValidator> 
           Part Number</p> 
          <p> 
           <asp:RequiredFieldValidator ID="valEmployeeID" runat="server" ControlToValidate="txtEmployeeID" ErrorMessage="Employee ID is required.">*</asp:RequiredFieldValidator> 
           Employee ID</p> 
          <p> 
           <asp:RequiredFieldValidator ID="valCurrentJobNumber" runat="server" ControlToValidate="txtCurrentJobNumber" ErrorMessage="Current Job Number is required.">*</asp:RequiredFieldValidator> 
           Current Job Number</p> 
          <p> 
           <asp:RequiredFieldValidator ID="valRevisionLevel" runat="server" ControlToValidate="txtRevisionLevel" ErrorMessage="Revision Level is required.">*</asp:RequiredFieldValidator> 
           Revision Level</p> 
          <p> 
           <asp:RequiredFieldValidator ID="valOperationNumber" runat="server" ControlToValidate="txtOperationNumber" ErrorMessage="Operation Number is required.">*</asp:RequiredFieldValidator> 
           Revision Level</p> 
         </div> 
         <div class="profileRow1Col2"> 
          <p> 
           <asp:TextBox ID="txtPartNumber" runat="server"></asp:TextBox> 
          </p> 
          <p> 
           <asp:TextBox ID="txtEmployeeID" runat="server"></asp:TextBox> 
          </p> 
          <p> 
           <asp:TextBox ID="txtCurrentJobNumber" runat="server"></asp:TextBox> 
          <p> 
           <asp:TextBox ID="txtRevisionLevel" runat="server"></asp:TextBox> 
          </p> 
          <p> 
           <asp:TextBox ID="txtOperationNumber" runat="server"></asp:TextBox> 
          </p> 
         </div> 
        </fieldset> 
        <fieldset> 
         <legend>Changes</legend> 
         <p> 
          <asp:RequiredFieldValidator ID="valProposedChange" runat="server" ControlToValidate="txtProposedChange" ErrorMessage="Proposed Change description is required." Text="*"></asp:RequiredFieldValidator> 
          Proposed Change</p> 
         <p> 
          <asp:TextBox ID="txtProposedChange" runat="server" height="100px" TextMode="MultiLine" Width="600px"></asp:TextBox> 
         </p> 
         <p> 
          <asp:RequiredFieldValidator ID="valChangeReason" runat="server" ControlToValidate="txtChangeReason" ErrorMessage="Reason for Proposed Change description is required." Text="*"></asp:RequiredFieldValidator> 
          Reason for Proposed Change</p> 
         <p> 
          <asp:TextBox ID="txtChangeReason" runat="server" height="100px" TextMode="MultiLine" Width="600px"></asp:TextBox> 
         </p> 


        </fieldset> 
        <p> 
         <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" /> 
         <asp:Button ID="btnReset" runat="server" CausesValidation="False" OnClick="btnReset_Click" Text="Reset" /> 
        </p> 

Вот это .cs я в настоящее время говорю, что электронная почта собирается отправить эти текущие поля в теле. Мне нужно знать, как сделать файл, загруженный в HTML-отправить как вложение в этом письме. Есть идеи?

protected void Button1_Click(object sender, EventArgs e) 
{ 
     String toAddress = ""; String fromAddress = "[email protected]"; 


     SmtpClient smtpClient = new SmtpClient("mail.companyemail.com"); 

     smtpClient.Port = 25; 

     MailMessage message = new MailMessage(); 
     message.IsBodyHtml = false; 
     message.Priority = MailPriority.High; 
     message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; 
     try 
     { 

      message.Subject = "Program Change"; 
      message.Body = "Part Number: " + txtPartNumber.Text.Trim() + "\n"; 
      message.Body += "Employee ID: " + txtEmployeeID.Text.Trim() + "\n"; 
      message.Body += "Current Job Number: " + txtCurrentJobNumber.Text.Trim() + "\n" + "\n"; 
      message.Body += "Revision Level: " + txtRevisionLevel.Text.Trim() + "\n"; 
      message.Body += "Operation Number: " + txtOperationNumber.Text.Trim() + "\n"; 
      message.Body += "Proposed Changes: " + txtProposedChange.Text.Trim() + "\n"; 
      message.Body += "Reason for Proposed Change: " + txtChangeReason.Text.Trim() + "\n"; 
      HttpPostedFile file = Request.Files["file"]; 
      Attachment attachment = new Attachment(file.InputStream, file.FileName); 
      message.Attachments.Add(attachment); 
      toAddress += "[email protected]"; 


      smtpClient.Send(fromAddress, toAddress, message.Subject, message.Body); 
     } 
     catch (Exception ex) 
     { 
      formPanel.Visible = false; 
      errorPanel.Visible = true; 


     } 
     formPanel.Visible = false; 
     errorPanel.Visible = false; 
     successPanel.Visible = true; 

} 
+0

Я отметил его, потому что я не был уверен, что ответ останется в Dreamweaver или будет в PHP – Individual101

+0

Я новичок в веб-дизайне. Я использую Dreamweaver для всего, когда меняю сайт. Я пробовал в PHP в прошлом, поэтому я не был уверен. – Individual101

+0

ASP.NET - это не PHP. Они не связаны друг с другом, кроме того, что оба они являются серверными веб-разработками на стороне сервера. Поэтому вы не должны пометить свой вопрос как PHP, если только PHP не задействован. Точно так же не помещайте свой вопрос как Dreamweaver, если ваш вопрос конкретно не связан с некоторым аспектом этой среды IDE. Пометка помогает нам классифицировать вопрос и связывать вас с нужными людьми, чтобы ответить на ваш вопрос, поэтому пометка неправильных вещей затрудняет экспертам поиск вопросов, на которые они могут ответить. – mason

ответ

0

Захватите файл из опубликованной формы.

HttpPostedFile file = Request.Files["file"]; 

Затем добавьте его в виде приложения.

Attachment attachment = new Attachment(file.InputStream, file.FileName); 
message.Attachments.Add(attachment); 

Примечание. Я не тестировал этот код.

+0

Где я могу поместить код, упомянутый выше? Я изменил свой .cs выше, чтобы отразить всю вещь. – Individual101

+0

Первая строка явно должна быть до 2-й строки, потому что вторая строка относится к первой. Третья строка должна быть после того, как вы объявили объект 'message', так как это зависит от этого. И, очевидно, вам нужно приложить электронное письмо перед отправкой. – mason

+0

Хорошо, я выполнил тест, но я столкнулся с дизайном самого asp. Когда я иду, чтобы захватить файл, чтобы загрузить кнопку, чтобы сделать загрузку нулей. Я нажимаю на просмотр, находим файл, он появляется рядом с просмотром, загрузкой, затем исчезает. Я оставил его в области просмотра и нажал submit, но приложение не попало по электронной почте. – Individual101