166 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| using System.Threading.Tasks;
 | |
| 
 | |
| namespace Console_SendMail
 | |
| {
 | |
|     partial class Program
 | |
|     {
 | |
|         //DateTime redisTryTime = DateTime.Parse("1982-11-23");
 | |
|         static Boolean bBW = true;
 | |
|         static DateTime ChkMakeAutoTime = DateTime.Now.AddDays(-1);
 | |
|         static DateTime ChkSendMailTime = DateTime.Now.AddDays(-1);
 | |
|         static DateTime ChkMakeSchDayWeekTime = DateTime.Now.AddDays(-1);
 | |
|         static DateTime ChkMakeSchDay = DateTime.Now.AddDays(-1);
 | |
|         static DateTime ChkNoSchedule = DateTime.Now.AddDays(-1);
 | |
|         static DateTime ChkJobreportDay = DateTime.Now.AddDays(-1);
 | |
|         static DateTime ChkJObreportWeek = DateTime.Now.AddDays(-1);
 | |
|         static DateTime ChkTakeARest = DateTime.Now.AddDays(-1);
 | |
| 
 | |
|         public static string MailSort(string addr, string except)
 | |
|         {
 | |
|             if (string.IsNullOrEmpty(except)) return addr;
 | |
|             var alist = addr.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
 | |
|             var elist = except.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
 | |
|             foreach (var item in elist)
 | |
|                 alist.Remove(item);
 | |
|             if (alist.Count < 1) return string.Empty;
 | |
|             return string.Join(";", alist);
 | |
|         }
 | |
| 
 | |
|         static string getdbdata(object tdata)
 | |
|         {
 | |
|             if (tdata == null) return string.Empty;
 | |
|             return tdata.ToString();
 | |
|         }
 | |
|         static string getMaillist(object orgo)
 | |
|         {
 | |
|             var org = string.Empty;
 | |
|             if (orgo != null) org = orgo.ToString();
 | |
|             org = org.Replace(";", ",").Replace(":", ",");
 | |
|             string list_to = "";
 | |
|             foreach (var item in org.Split(','))
 | |
|             {
 | |
|                 if (item.Trim() != "")
 | |
|                 {
 | |
|                     var atindex = item.IndexOf("@");
 | |
|                     if (atindex != -1)
 | |
|                     {
 | |
|                         var dotindex = item.IndexOf(".", atindex + 1);
 | |
|                         if (dotindex != -1)
 | |
|                         {
 | |
|                             //정상이므로 추가한다.
 | |
|                             if (list_to != "") list_to += ",";
 | |
|                             list_to += item.Trim();
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             return list_to;
 | |
|         }
 | |
| 
 | |
| 
 | |
| 
 | |
|         static void Main(string[] args)
 | |
|         {
 | |
| 
 | |
|             Console.WriteLine("mail start");
 | |
|             while (true)
 | |
|             {
 | |
|                 
 | |
|                 //메일대기내역전송
 | |
|                 var tsSendMail = DateTime.Now - ChkSendMailTime;
 | |
|                 if (tsSendMail.TotalMilliseconds > 1000)
 | |
|                 {
 | |
|                     try { SendMail(); }
 | |
|                     catch { }
 | |
|                     finally { ChkSendMailTime = DateTime.Now; }
 | |
|                 }
 | |
| 
 | |
|                 //자동생성 메일 작성
 | |
|                 var tsAutoMake = DateTime.Now - ChkMakeAutoTime;
 | |
|                 if (tsAutoMake.TotalMinutes >= 10)
 | |
|                 {
 | |
|                     try { MakeAutoMail(); }
 | |
|                     catch { }
 | |
|                     finally { ChkMakeAutoTime = DateTime.Now; }
 | |
|                 }
 | |
| 
 | |
|                 ///스케쥴 기한 알림(주)
 | |
|                 var tsScheDayweek = DateTime.Now - ChkMakeSchDayWeekTime;
 | |
|                 if (tsScheDayweek.TotalMinutes > 30 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 10 && DateTime.Now.Hour <= 18)
 | |
|                 {
 | |
| 
 | |
|                     try { Mail_MakeScheduleDayWeek(); }
 | |
|                     catch { }
 | |
|                     finally { ChkMakeSchDayWeekTime = DateTime.Now; }
 | |
|                 }
 | |
| 
 | |
|                 ///스케쥴 기한 알림(일)
 | |
|                 var tsScheDay = DateTime.Now - ChkMakeSchDay;
 | |
|                 if (tsScheDay.TotalMinutes > 30 && DateTime.Now.DayOfWeek != DayOfWeek.Saturday &&
 | |
|                     DateTime.Now.DayOfWeek != DayOfWeek.Sunday && DateTime.Now.Hour >= 10 && DateTime.Now.Hour <= 18)
 | |
|                 {
 | |
| 
 | |
|                     try { Mail_MakeScheduleDay(); }
 | |
|                     catch { }
 | |
|                     finally { ChkMakeSchDay = DateTime.Now; }
 | |
|                 }
 | |
| 
 | |
|                 ///스케쥴없음
 | |
|                 var tsNoSchedule = DateTime.Now - ChkNoSchedule;
 | |
|                 if (tsNoSchedule.TotalMinutes > 30 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 10 && DateTime.Now.Hour <= 18)
 | |
|                 {
 | |
| 
 | |
|                     try { Mail_NoSchedule(); }
 | |
|                     catch { }
 | |
|                     finally { ChkNoSchedule = DateTime.Now; }
 | |
|                 }
 | |
| 
 | |
|                 ///업무일지(주간)
 | |
|                 var tsjobweek = DateTime.Now - ChkJObreportWeek;
 | |
|                 if (tsjobweek.TotalMinutes > 30 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 18)
 | |
|                 {
 | |
| 
 | |
|                     try { Mail_JobReportWeek(); }
 | |
|                     catch { }
 | |
|                     finally { ChkJObreportWeek = DateTime.Now; }
 | |
|                 }
 | |
| 
 | |
|                 ///업무일지(일)
 | |
|                 var tsjobday = DateTime.Now - ChkJobreportDay;
 | |
|                 if (tsjobday.TotalMinutes > 15 &&
 | |
|                     DateTime.Now.DayOfWeek != DayOfWeek.Saturday &&
 | |
|                     DateTime.Now.DayOfWeek != DayOfWeek.Sunday &&
 | |
|                     DateTime.Now.DayOfWeek != DayOfWeek.Monday &&
 | |
|                     DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 18)
 | |
|                 {
 | |
| 
 | |
|                     try { Mail_JobReportDay(); }
 | |
|                     catch { }
 | |
|                     finally { ChkJobreportDay = DateTime.Now; }
 | |
|                 }
 | |
| 
 | |
|                 ///휴가신청(Remind) - 230611
 | |
|                 var tsTakeaRest = DateTime.Now - ChkTakeARest;
 | |
|                 if (tsTakeaRest.TotalMinutes > 15 &&
 | |
|                     DateTime.Now.DayOfWeek != DayOfWeek.Saturday &&
 | |
|                     DateTime.Now.DayOfWeek != DayOfWeek.Sunday &&
 | |
|                     DateTime.Now.Hour >= 17)
 | |
|                 {
 | |
| 
 | |
|                     try { Mail_Take_a_rest_remind(); }
 | |
|                     catch { }
 | |
|                     finally { ChkTakeARest = DateTime.Now; }
 | |
|                 }
 | |
| 
 | |
|             }
 | |
| 
 | |
|             Console.WriteLine("mail end");
 | |
|         }
 | |
| 
 | |
|     }
 | |
| }
 | 
