【问题标题】:Having trouble with Emailing a form my users fill out在通过电子邮件发送用户填写的表格时遇到问题
【发布时间】:2012-07-24 23:50:19
【问题描述】:

所以我的程序的主要目的是让用户在我的网站上填写申请表。一旦填写了网络表单并且用户按下了提交,我已经完成了,所以程序会将他们填写的信息发送到我的电子邮件。

我遇到的两个主要问题是,除非用户附加附件,否则网络表单将不会发送。这很糟糕,因为不需要他们这样做。所以我需要某种 if 语句来说明程序仍然应该发送带有或不带有附件的内容。我也希望在发送给我自己的电子邮件中发送日期。我该如何做到这一点,以便在用户点击提交按钮的第二次将日期发送到我的电子邮件。

我已经添加了下面的大部分代码。

谢谢

private string SendMessage(string strTo, string strFrom, string strSubject, string strMessage, string strAttachment, string strBCC)
{
    try
    {
        System.Net.Mail.MailMessage mailMsg;
        string strEmail = "";
        string strSmtpClient = ConfigurationManager.AppSettings["SmtpClient"];
        string[] arrEmailAddress = strTo.Split(';');
        for (int intCtr = 0; intCtr < arrEmailAddress.Length; intCtr++)
        {
            strEmail = "";
            if (arrEmailAddress[intCtr].ToString().Trim() != "")
            {
                strEmail = arrEmailAddress[intCtr].ToString().Trim();
                mailMsg = new MailMessage(strFrom, strEmail, strSubject, strMessage);
                mailMsg.IsBodyHtml = true;
                if (!strBCC.Trim().Equals(string.Empty))
                    mailMsg.Bcc.Add(strBCC);

                /*** Added mail attachment handling ***/    
                System.Net.Mail.Attachment attachment;
                attachment = new System.Net.Mail.Attachment(strAttachment);
                mailMsg.Attachments.Add(attachment);

                SmtpClient smtpClient = new SmtpClient(strSmtpClient);
                smtpClient.UseDefaultCredentials = true;
                smtpClient.Port = 25;

                smtpClient.Send(mailMsg);
                mailMsg.Dispose();
            }
        }
        return "Message sent to " + strTo + " at " + DateTime.Now.ToString() + ".";
    }
    catch (Exception objEx)
    {
        return objEx.Message.ToString();
    }
}

protected void Submit_Click1(object sender, EventArgs e)
{
    try
    {
        /*** Moved from SendMessage function ****/
        string strUpLoadDateTime = System.DateTime.Now.ToString("yyyyMMddHHmmss");
        string strFileName1 = string.Empty;
        if ((File1.PostedFile != null) && (File1.PostedFile.ContentLength > 0))
        {
            string strUploadFileName1 = File1.PostedFile.FileName;
            strFileName1 = strUpLoadDateTime + "." + Path.GetFileNameWithoutExtension(strUploadFileName1) + Path.GetExtension(strUploadFileName1);
            strFileName1 = strFileName1.Replace("'", "");
            string strSaveLocation = Server.MapPath("") + "\\" + strFileName1;
            File1.PostedFile.SaveAs(strSaveLocation);
            txtComments.Text = "The file has been uploaded";
        }

        System.Text.StringBuilder sb = new System.Text.StringBuilder();
System.Text.StringBuilder sb = new System.Text.StringBuilder();

sb.Append("<table>");
sb.AppendFormat("<tr><td>Request Name:</td><td>{0}</td></tr>", txtBugName.Text.Trim());
sb.AppendFormat("<tr><td>Category:</td><td>{0}</td></tr>", ddlModule.SelectedValue);
sb.AppendFormat("<tr><td>Sub-Category:</td><td>{0}</td></tr>", ddlPage.SelectedValue);
sb.AppendFormat("<tr><td>Description:</td><td>{0}</td></tr>", txtComments.Text.Trim());
sb.AppendFormat("<tr><td>Email is:</td><td>{0}</td></tr>", txtemail.Text.Trim());
sb.Append("<table>");



        SendMessage(ConfigurationManager.AppSettings["EmailAddrTo"],
            ConfigurationManager.AppSettings["EmailAddrFrom"],
            txtBugName.Text.Trim(),
            strMessage, strSaveLocation, "");
    }
    catch
    {
    }
}

【问题讨论】:

    标签: c# forms email


    【解决方案1】:

    整理了一下你的方法

        /// <summary>
        /// Sends the message.
        /// </summary>
        /// <param name="strTo">The STR to.</param>
        /// <param name="strFrom">The STR from.</param>
        /// <param name="strSubject">The STR subject.</param>
        /// <param name="strMessage">The STR message.</param>
        /// <param name="strAttachment">The STR attachment.</param>
        /// <param name="strBCC">The STR BCC.</param>
        /// <returns></returns>
        private string SendMessage(string strTo, string strFrom, string strSubject, string strMessage, string strAttachment, string strBCC)
        {
            try
            {
                string strEmail = string.Empty;
                string strSmtpClient = ConfigurationManager.AppSettings["SmtpClient"];
                string[] arrEmailAddress = strTo.Split(';');
    
                foreach (string emailAddress in arrEmailAddress)
                {
                    if (!string.IsNullOrEmpty(emailAddress.Trim()))
                    {
                        using (System.Net.Mail.MailMessage mailMsg = new MailMessage(strFrom, strEmail, strSubject, strMessage))
                        {
                            mailMsg.IsBodyHtml = true;
                            if (!string.IsNullOrEmpty(strBCC))
                                mailMsg.Bcc.Add(strBCC);
    
                            if (!string.IsNullOrEmpty(strAttachment))
                            {
                                System.Net.Mail.Attachment attachment;
                                attachment = new System.Net.Mail.Attachment(strAttachment);
                                mailMsg.Attachments.Add(attachment);
                            }
    
                            using (System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(strSmtpClient))
                            {
                                smtpClient.UseDefaultCredentials = true;
                                smtpClient.Port = 25;
                                smtpClient.Send(mailMsg);
                            }
                        }
                    }
                }
                return string.Format("Message sent to {0} at {1}.", strTo, DateTime.Now);
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
    

    【讨论】:

      【解决方案2】:

      要知道您的用户何时点击:

      在您的消息创建中添加一行:sb.AppendFormat("&lt;tr&gt;&lt;td&gt;User clicked submit on:&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;", strUpLoadDateTime); 在您的 Submit_CLick1 中

      为防止发送邮件失败,设置附件为条件:

      if (!string.IsNullOrWhiteSpace(strAttachment))
      {
          /*** Added mail attachment handling ***/    
          System.Net.Mail.Attachment attachment;
          attachment = new System.Net.Mail.Attachment(strAttachment);
          mailMsg.Attachments.Add(attachment);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 2022-08-18
        • 2015-10-19
        • 2021-04-29
        • 2011-11-08
        相关资源
        最近更新 更多