【问题标题】:Upload file to form on intranet and email将文件上传到 Intranet 和电子邮件上的表格
【发布时间】:2015-10-27 04:59:24
【问题描述】:

我们在公司内部网上有一个表单,用户可以在其中输入数据,然后单击提交数据,这些数据会被编译成电子邮件并发送给特定的用户列表。我们有我指定通过电子邮件发送哪些数据的 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 = "doNotReply@companyemail.com";


        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 += "user@companyemail.com";


            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;

}

【问题讨论】:

  • 我标记它是因为我不确定答案是否会保留在 Dreamweaver 中或 PHP 中
  • 我是网页设计的新手。更改站点时,我使用 Dreamweaver 处理一切。我过去涉足 PHP,所以我不确定。
  • ASP.NET 不是 PHP。它们不相关,只是它们都恰好是服务器端 Web 开发框架。因此,除非特别涉及 PHP,否则不应将您的问题标记为 PHP。同样,不要将您的问题标记为 Dreamweaver,除非您的问题与该 IDE 的某些方面特别相关。标记有助于我们对问题进行分类并将您与合适的人联系以回答您的问题,因此标记错误的事物会使专家更难找到他们可以回答的问题。
  • 我只是在这里寻求帮助。您已经对其进行了更改,因此标记已完成
  • 我知道您正在寻求帮助。我正在努力帮助您学习更好地使用此网站,并使了解您的问题的人更有可能找到您的问题。简单地问你的问题而不正确地标记它会降低它被可以提供帮助的人看到的可能性。你不必担心。这不像你有麻烦。只是想让你开始正确。

标签: html asp.net file-upload webforms


【解决方案1】:

从发布的表单中获取文件。

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

然后,将其添加为附件。

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

注意,我没有测试过这段代码。

【讨论】:

  • 我把你上面提到的代码放在哪里?我已经更改了我上面的 .cs 以反映整个事情
  • 第一行显然需要在第二行之前,因为第二行是指第一行。第三行需要在您声明 message 对象之后,因为它取决于此。显然,您需要在发送电子邮件之前附上电子邮件。
  • 好吧,我进行了测试,但我遇到了 asp 本身的设计。当我去抓取文件上传时,上传按钮会将其归零。我点击浏览,找到文件,出现在浏览旁边,点击上传,然后就消失了。我将它留在浏览区域并点击提交,但附件没有通过电子邮件发送。
  • @Individual101 检查浏览器调试工具的网络选项卡,看看您的文件是否已上传到服务器。
  • 在帖子提交屏幕上?
猜你喜欢
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 2017-06-05
  • 2011-09-02
  • 1970-01-01
  • 2013-07-06
相关资源
最近更新 更多