1

したがって、私のプログラムの主な目的は、ユーザーが私の Web サイトでリクエスト フォームに記入できるようにすることです。Web フォームに入力し、ユーザーが [送信] を押すと、入力した情報が電子メールに送信されるようになりました。

私が抱えている 2 つの大きな問題は、ユーザーが添付ファイルを添付しない限り、Web フォームが送信されないことです。そうする必要がないので、これは悪いことです。したがって、プログラムが添付ファイルの有無にかかわらず送信する必要があることを示す if ステートメントが必要です。同様に、私は自分自身に送信される電子メールで日付を送信したいと考えています。ユーザーが送信ボタンを押した 2 番目のメールに日付が送信されるようにするにはどうすればよいですか。

以下のコードのほとんどを追加しました。

ありがとう

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

yr メソッドを少しクリーンアップ

    /// <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);します。

電子メールの送信に失敗しないようにするには、添付ファイルを条件付きにします。

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 に答える