예제 #1
0
        /// <summary>
        /// メール送信非同期メソッド
        /// </summary>
        /// <param name="log"></param>
        /// <param name="ptn"></param>
        private async void sendAlertMail(string log, MailPattern ptn)
        {
            await Task.Run(() =>
            {
                try
                {
                    Debug.WriteLine("*** SendMailTask start");
                    // 非シグナル状態にする
                    this.manualResetEvent.Reset();

                    string message = ptn.Message.Replace("[LOG_MESSAGE]", log);
                    this.smtp.SendMail(ptn.ToAddress, ptn.Subject, message);

                    // メール送信したのでシグナル状態へ
                    this.manualResetEvent.Set();
                    Debug.WriteLine("*** SendMailTask end");
                }
                catch (Exception ex)
                {
                    // メール失敗してもシグナルを戻す
                    this.manualResetEvent.Set();
                    Console.WriteLine(ex.ToString());
                }
            });
        }
예제 #2
0
        /// <summary>
        /// DataTableからデータを取り出す
        /// </summary>
        /// <returns></returns>
        public new List <MailPattern> GetPatterns()
        {
            List <MailPattern> list = new List <MailPattern>();

            foreach (DataRow dr in this.DataSource.Rows)
            {
                string[] strs = new string[6];
                strs[0] = dr[1].ToString();        // フラグ
                strs[1] = dr[2].ToString().Trim(); // 正規表現
                strs[2] = dr[3].ToString().Trim(); // コメント
                strs[3] = dr[4].ToString().Trim(); // アドレス
                strs[4] = dr[5].ToString().Trim(); // タイトル
                strs[5] = dr[6].ToString().Trim(); // メッセージ
                // 正規表現が設定されていないものは無視
                if (string.IsNullOrEmpty(strs[1]))
                {
                    continue;
                }

                MailPattern ptn = new MailPattern(strs);
                list.Add(ptn);
            }

            return(list);
        }
        public void IsProperHandlerReturnsFalseIfRuleMailPatternIsNotYearly(MailPattern mailPattern)
        {
            // Assemble
            var mailRule = new MailRule {
                MailPattern = mailPattern, DayNumber = 4
            };

            // Act
            var result = this.matcher.IsProperMatcher(mailRule);

            // Assert
            Assert.IsFalse(result);
        }
예제 #4
0
 /// <summary>
 /// DataTableにデータを投入する
 /// </summary>
 /// <param name="list"></param>
 public void SetPatterns(List <MailPattern> list)
 {
     foreach (MailPattern ptn in list)
     {
         MailPattern mp = (MailPattern)ptn;
         DataRow     dr = this.DataSource.NewRow();
         dr[0] = this.DataSource.Rows.Count + 1;
         dr[1] = mp.Enable;
         dr[2] = mp.RegularExp;
         dr[3] = mp.Comment;
         dr[4] = mp.ToAddress;
         dr[5] = mp.Subject;
         dr[6] = mp.Message;
         this.DataSource.Rows.Add(dr);
     }
 }
예제 #5
0
        public void IsProperHandlerReturnsFalseIfRuleMailPatternIsNotWeekly(MailPattern mailPattern)
        {
            // Assemble
            var mailRule = new MailRule
            {
                MailPattern = mailPattern,
                DaysOfWeek  = new Dictionary <DayOfWeek, bool> {
                    { DayOfWeek.Thursday, true }
                }
            };

            // Act
            var result = this.matcher.IsProperMatcher(mailRule);

            // Assert
            Assert.IsFalse(result);
        }
        public void IsProperMatcherReturnsFalseIfRuleMailPatternIsNotMonthly(MailPattern mailPattern)
        {
            // Assemble
            var mailRule = new MailRule
            {
                MailPattern = mailPattern,
                DayNumber   = 4,
                DaysOfWeek  = new Dictionary <DayOfWeek, bool> {
                    { DayOfWeek.Monday, false }
                }
            };

            // Act
            var result = this.matcher.IsProperMatcher(mailRule);

            // Assert
            Assert.IsFalse(result);
        }
예제 #7
0
        public void IsProperHandlerReturnsFalseIfRuleMailPatternIsNotDaily(MailPattern mailPattern)
        {
            // Assemble
            var mailRule = new MailRule
            {
                MailPattern = mailPattern,
                DaysOfWeek  = new Dictionary <DayOfWeek, bool> {
                    { DayOfWeek.Friday, true }
                }
            };

            Assert.IsTrue(mailRule.IsDayOfWeekRestricted, "Test is not configured properly");

            // Act
            var result = this.matcher.IsProperMatcher(mailRule);

            // Assert
            Assert.IsFalse(result);
        }