1

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

我遇到的两个主要问题是一个除非用户附加附件,否则网络表单将不会发送。这很糟糕,因为不需要他们这样做。所以我需要某种 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
    {
    }
}
4

2 回答 2

2

清理了你的方法

    /// <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;
        }
    }
于 2012-07-26T11:46:11.630 回答
1

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

在您的消息的创建中添加一行:sb.AppendFormat("<tr><td>User clicked submit on:</td><td>{0}</td></tr>", 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);
}
于 2012-07-26T11:56:00.773 回答