0

私は休暇管理システムに取り組んでいます。これは私の社内プロジェクトです。このために、休暇開始日、終了日、休暇管理フォームのレポート マネージャー送信ボタンなどのフィールドを配置し、ユーザーはこれらのフィールドに入力して送信ボタンをクリックします。人の休暇が適用されます)アカウント、これまでは正常に機能していました。

今、私は新しい要件を取得しました。ユーザーは休暇管理フィールドに入力して送信しました (ユーザーが休暇を申請します)。この休暇申請は、レポート マネージャーに送られます。報告マネージャーが最大 3 日間のユーザーの休暇申請を承認しなかった場合、その時点で、ユーザーのメール アカウントから最大 3 回まで、毎日 3 回、メールが自動的にトリガーされます。

たとえば、今日(2013 年 8 月 21 日) に休暇を申請した場合、休暇申請は、時間の申請中にメール アカウントからレポート マネージャーに送信されます。私の直属の上司が 3 日間の休暇申請を承認しなかったということは、2013 年 8 月 24 日を意味します。この日付のメールは、私のアカウントから直属の上司のアカウントに自動的に送信されます。彼は 2013 年 8 月 24 日の日付も承認しませんでした。 2013 年 8 月 27 日のレポート マネージャー アカウントへの私のアカウント、2013 年 8 月 27 日に承認されなかった場合、2013 年 8 月 30 日にトリガーされたメール、2013 年 8 月 28 日にトリガーされたメールも、人事メールに自動的にトリガーされた承認されていないメールアカウント(休暇申請時にCcメールがHRに行く)。

休暇管理フォームの送信ボタンのコードの下:

    protected void BtnApplyLeave_Click(object sender, EventArgs e)
    {
        if (ddlleavetype.SelectedIndex == 0)
        {
            lblerrmsg.Text = "Please select Leavetype";
            lblerrmsg.Visible = true;
        }
        else if (txtmbno.Text == "")
        {
            lblerrmsg.Text = "Please Enter MobileNO";
            lblerrmsg.Visible = true;
        }
        else if (txtfromdate.Text == "")
        {
            lblerrmsg.Text = "please Select From date";
            lblerrmsg.Visible = true;
        }
        else if (txttodate.Text == "")
        {
            lblerrmsg.Text = "please Select todate";
            lblerrmsg.Visible = true;
        }
        else if (txtReasonleave.Text == "")
        {
            lblerrmsg.Text = "Please Enter Reason for Leave";
            lblerrmsg.Visible = true;
        }
        else
        {
            string username = Session["logUser"].ToString();
            if (ddlleavetype.SelectedValue == "Earned Leave")
            {
                try
                {
                    OleDbCommand com = new OleDbCommand("update IND_EMP_LEAVES set leavefromdate = to_date('" + txtfromdate.Text + "','dd/MM/yyyy'), leavetodate = to_date('" + txttodate.Text + "','dd/MM/yyyy'), MBNO = '" + txtmbno.Text + "', NOOFDAYSAPPL = '" + txtleavedays.Text + "', LEAVETYPE = '" + ddlleavetype.SelectedValue + "', REASONFORLEAVE = '" + txtReasonleave.Text + "', STATUS = '" + "null" + "' where Username ='" + username + "'", DbConnection);
                    DbConnection.Open();
                    com.ExecuteNonQuery();
                    DbConnection.Close();
                }
                catch (Exception ex)
                {
                    ex.ToString();
                }
            }

            else if (ddlleavetype.SelectedValue == "Sick Leave")
            {
                try
                {
                    OleDbCommand com = new OleDbCommand("update IND_EMP_LEAVES set leavefromdate = to_date('" + txtfromdate.Text + "','dd/MM/yyyy'), leavetodate = to_date('" + txttodate.Text + "','dd/MM/yyyy'), MBNO = '" + txtmbno.Text + "', NOOFDAYSAPPL = '" + txtleavedays.Text + "', LEAVETYPE = '" + ddlleavetype.SelectedValue + "', REASONFORLEAVE = '" + txtReasonleave.Text + "', STATUS = '" + "null" + "' where Username ='" + username + "'", DbConnection);
                    DbConnection.Open();
                    com.ExecuteNonQuery();
                    DbConnection.Close();
                }
                catch(Exception ex)
                {
                    ex.ToString();
                }
            }

            else if (ddlleavetype.SelectedValue == "LOP")
            {
                try
                {
                    OleDbCommand com = new OleDbCommand("update IND_EMP_LEAVES set leavefromdate = to_date('" + txtfromdate.Text + "','dd/MM/yyyy'), leavetodate = to_date('" + txttodate.Text + "','dd/MM/yyyy'), MBNO = '" + txtmbno.Text + "', NOOFDAYSAPPL = '" + txtleavedays.Text + "', LEAVETYPE = '" + ddlleavetype.SelectedValue + "', REASONFORLEAVE = '" + txtReasonleave.Text + "', STATUS = '" + "null" + "' where Username ='" + username + "'", DbConnection);
                    DbConnection.Open();
                    com.ExecuteNonQuery();
                    DbConnection.Close();
                }
                catch (Exception ex)
                {
                    ex.ToString();
                }
            }

            try
            {
                string subject = "Reg: Leave Request";
                string datefrom = txtfromdate.Text;
                string dateto = txttodate.Text;
                string msg = txtReasonleave.Text;

                DbConnection.Open();
                OleDbCommand cmd = new OleDbCommand("select EMP_NAME, REPT_MGR, hr from EMP_HIERARCHY where username ='" + username + "'", DbConnection);
                OleDbDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    string ename = dr[0].ToString();
                    string rep_mgr = dr[1].ToString();
                    string hr_mgr = dr[2].ToString();
                    Session["emp"] = ename;
                    Session["mgr"] = rep_mgr;
                    Session["hr"] = hr_mgr;
                }
                dr.Close();

                string emp = Session["emp"].ToString();

                OleDbCommand cmd7 = new OleDbCommand("select M.OFFICIAL_EMAIL, L.pwd from EMP_MASTER M, emplogin L where L.username = '" + username + "' and M.username = L.username", DbConnection);
                OleDbDataReader dr1 = cmd7.ExecuteReader();
                while (dr1.Read())
                {
                    string frommail = dr1[0].ToString();
                    string frompwd = dr1[1].ToString();
                    Session["from"] = frommail;
                    Session["pwd"] = frompwd;
                }
                dr1.Close();

                string mgr = Session["mgr"].ToString();
                string hr = Session["hr"].ToString();

                OleDbCommand cmd2 = new OleDbCommand("select OFFICIAL_EMAIL from emp_master where emp_name = '" + mgr + "'", DbConnection);
                OleDbDataReader dr2 = cmd2.ExecuteReader();
                while (dr2.Read())
                {
                    string rep_to = dr2[0].ToString();
                    Session["to"] = rep_to.ToString();
                }
                dr2.Close();

                OleDbCommand cmd3 = new OleDbCommand("select OFFICIAL_EMAIL from emp_master where emp_name = '" + hr + "'", DbConnection);
                OleDbDataReader dr3 = cmd3.ExecuteReader();
                while (dr3.Read())
                {
                    string hr_to = dr3[0].ToString();
                    Session["Cc"] = hr_to.ToString();
                }
                dr3.Close();


                string body = string.Concat("I would like to apply '" + ddlleavetype.SelectedValue + "' from ", datefrom, " to ", dateto, System.Environment.NewLine, "Reason: ", msg);
                string from = Session["from"].ToString();
                string pwd = Session["pwd"].ToString();
                string to = Session["to"].ToString();
                string Cc = Session["Cc"].ToString();

                var smtp = new System.Net.Mail.SmtpClient();
                {
                    smtp.Host = "smtp.gmail.com";
                    smtp.Port = 587;
                    smtp.EnableSsl = true;
                    smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                    smtp.Credentials = new NetworkCredential(from, pwd);
                    smtp.Timeout = 20000;
                }

                //smtp.Send(from, to, subject, body); 

                // Instantiate a new instance of MailMessage
                MailMessage mMailMessage = new MailMessage();

                // Set the sender address of the mail message
                mMailMessage.From = new MailAddress(from);

                // Set the recepient address of the mail message
                mMailMessage.To.Add(new MailAddress(to));

                // Check if the bcc value is null or an empty string
                //if ((bcc != null) && (bcc != string.Empty))
                //{
                //    // Set the Bcc address of the mail message
                //    mMailMessage.Bcc.Add(new MailAddress(bcc));
                //}     

                // Check if the cc value is null or an empty value
                if ((Cc != null) && (Cc != string.Empty))
                {
                    // Set the CC address of the mail message
                    mMailMessage.CC.Add(new MailAddress(Cc));
                }

                // Set the subject of the mail message
                mMailMessage.Subject = subject;

                // Set the body of the mail message
                mMailMessage.Body = body;

                // Set the format of the mail message body as HTML
                mMailMessage.IsBodyHtml = true;

                // Set the priority of the mail message to normal
                mMailMessage.Priority = MailPriority.Normal;

                // Instantiate a new instance of SmtpClient
                //SmtpClient smtp = new SmtpClient();
                // Send the mail message
                smtp.Send(mMailMessage);

                ScriptManager.RegisterStartupScript(this, GetType(), "success", "alert('Leave Request sent Successfully');", true);
               // Session.Clear();
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
        }
    }
4

2 に答える 2

2

Quartz.NETでは、ジョブの定期的なスケジューリングが可能です。これを使用して、メールのスケジュールを設定できます。このブログは、アプリで Quartz を使用する方法の良い例を示しています。

役立つと思われる別のスレッドを次に示します:電子メールをスケジュールするために Quartz.NET をセットアップする方法

于 2013-08-21T11:49:09.797 に答える