mail maanger 누락 파일 추가
This commit is contained in:
		
							
								
								
									
										229
									
								
								MailManager/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										229
									
								
								MailManager/Program.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,229 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Data.SqlClient; | ||||
|  | ||||
| namespace MailManager | ||||
| { | ||||
|     class Program | ||||
|     { | ||||
|  | ||||
|         static DateTime ChkAutoDate = DateTime.Now.AddDays(-1); | ||||
|         static void Main(string[] args) | ||||
|         { | ||||
|             //먼저 보낼 메일이 있다면 전송을 한다 | ||||
|  | ||||
|             while (true) | ||||
|             { | ||||
|  | ||||
|                 try | ||||
|                 { | ||||
|  | ||||
|                      SendMail(); | ||||
|                 } | ||||
|                 catch (Exception ex) | ||||
|                 { | ||||
|                     Console.WriteLine("send error:" + ex.Message); | ||||
|                 } | ||||
|  | ||||
|                 System.Threading.Thread.Sleep(1000); | ||||
|  | ||||
|                 try | ||||
|                 { | ||||
|  | ||||
|                     MakeAutoMail(); | ||||
|                 } | ||||
|                 catch (Exception ex) | ||||
|                 { | ||||
|                     Console.WriteLine("MakeAutoMail error:" + ex.Message); | ||||
|                 } | ||||
|  | ||||
|                 System.Threading.Thread.Sleep(1000); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         static void SendMail() | ||||
|         { | ||||
|             Console.WriteLine("Check Send Mail Data"); | ||||
|             var ta = new DataSet1TableAdapters.MailDataTableAdapter(); | ||||
|             var sendList = ta.GetData(); //발송되지않은 메일목록 | ||||
|  | ||||
|             if (sendList.Rows.Count > 0) Console.WriteLine("Found : " + sendList.Rows.Count.ToString()); | ||||
|  | ||||
|             foreach (DataSet1.MailDataRow dr in sendList) | ||||
|             { | ||||
|                 //전자메일 검증을 한다. | ||||
|                 var list_from = getMaillist(dr.fromlist); | ||||
|                 var list_to = getMaillist(dr.tolist); | ||||
|                 var list_bcc = getMaillist(dr.bcc); | ||||
|                 var list_cc = getMaillist(dr.cc); | ||||
|  | ||||
|  | ||||
|                 string sendMsg = ""; | ||||
|                 if (list_from == "") | ||||
|                 { | ||||
|                     sendMsg = ("보내는 주소가 없습니다"); | ||||
|                 } | ||||
|                 else if (dr.subject.Trim() == "") | ||||
|                 { | ||||
|                     sendMsg = ("메일 제목이 없습니다"); | ||||
|                 } | ||||
|                 else if (dr.body.Trim() == "") | ||||
|                 { | ||||
|                     sendMsg = ("본문이 없습니다"); | ||||
|                 } | ||||
|                 else if (list_to == "") | ||||
|                 { | ||||
|                     sendMsg = ("받는 주소가 없습니다"); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|  | ||||
|                     var body = dr.body; | ||||
|                     body += | ||||
|                         "<p>" + | ||||
|                         "<br />이 메일은 EET 프로그램에서 자동 발신 되었습니다." + | ||||
|                         "<br />메일이 잘못 전송 되었다면 [<a href='chikyun.kim@amkor.co.kr'>chikyun.kim@amkor.co.kr</a>] 로 문의 주시기 바랍니다" + | ||||
|                         "</p>"; | ||||
|  | ||||
|  | ||||
|                     //전송을 해야 함 | ||||
|                     var mc = new System.Net.Mail.SmtpClient("10.101.10.6"); | ||||
|                     var msg = new System.Net.Mail.MailMessage | ||||
|                         (list_from, | ||||
|                         list_to, | ||||
|                         dr.subject, | ||||
|                         body); | ||||
|  | ||||
|  | ||||
|                     if (list_bcc != "") msg.Bcc.Add(list_bcc); | ||||
|                     if (list_cc != "") msg.CC.Add(list_cc); | ||||
|                     msg.IsBodyHtml = true; | ||||
|  | ||||
|                     try | ||||
|                     { | ||||
|                         mc.Send(msg); | ||||
|                         Console.WriteLine("send mail to" + list_to + ",subject=" + dr.subject); | ||||
|                         sendMsg = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); | ||||
|                     } | ||||
|                     catch (Exception eX) | ||||
|                     { | ||||
|                         sendMsg = eX.Message; | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 Console.WriteLine(string.Format("Send Complete index={0},Msg={1}", dr.idx, sendMsg)); | ||||
|                 ta.UpdateSendOK(sendMsg, dr.idx); | ||||
|                 break; | ||||
|             } | ||||
|  | ||||
|         } | ||||
|  | ||||
|         static void MakeAutoMail() | ||||
|         { | ||||
|             var ts = DateTime.Now - ChkAutoDate; | ||||
|             if (ts.TotalMinutes < 1) return;   //10분마다 자동 생성 데이터를 처리한다 | ||||
|             Console.WriteLine("Check Auto Make Mail"); | ||||
|  | ||||
|             var taData = new DataSet1TableAdapters.MailDataTableAdapter(); | ||||
|             var taList = new DataSet1TableAdapters.MailAutoTableAdapter(); | ||||
|             var dtList = taList.GetByAutoSend(); | ||||
|             var dtInsert = new DataSet1.MailDataDataTable(); | ||||
|  | ||||
|             //대상 | ||||
|             Console.WriteLine("Make Auto Send Mail Data (" + dtList.Rows.Count.ToString() + ")"); | ||||
|  | ||||
|             foreach (DataSet1.MailAutoRow dr in dtList) | ||||
|             { | ||||
|                 //시간정보가 없는 애들은 처리 하지 않음 | ||||
|                 if (dr.stime.IndexOf(":") == -1) continue; | ||||
|                 if (dr.sday == null || dr.sday.Length < 2) continue; | ||||
|  | ||||
|                 //발신시간을 넘어야 한다 | ||||
|                 var curTime = DateTime.Now.ToString("HH:mm"); | ||||
|                 if (string.Compare(curTime, dr.stime) < 0) continue;   //지정된 시간 이전이면 생성 안한다 | ||||
|  | ||||
|                 //자동생성 구분용 카테고리 | ||||
|                 var cate = string.Format("{0},{1}", dr.sday[0], dr.sday[1]);  | ||||
|  | ||||
|                 //동륵일 | ||||
|                 var pdate = DateTime.Now.ToString("yyyy-MM-dd"); | ||||
|  | ||||
|                 //같은날, 같은 atime aidx pdate 의 같이 있으면 이미 생성된것이므로 추가하지 않는다 | ||||
|                 var existData = taData.FindAutoData(dr.idx, dr.stime, pdate, cate); | ||||
|                 var PreMakeCount = (int)(existData); | ||||
|                 if (PreMakeCount > 0) continue; | ||||
|  | ||||
|                 //전송간격과 대상 | ||||
|                 if (dr.sday[0] == 1) | ||||
|                 { | ||||
|                     //week | ||||
|                     var bitString = Convert.ToString(dr.sday[1], 2).PadLeft(8, '0').ToArray(); | ||||
|                     var weeknum = (int)(DateTime.Now.DayOfWeek); | ||||
|                     if (bitString[weeknum + 1] == '0') continue; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     //month | ||||
|                     if (dr.sday[1] != DateTime.Now.Day) continue; | ||||
|                 } | ||||
|  | ||||
|              | ||||
|  | ||||
|                 //같은날, 같은 atime aidx pdate 의 같이 있으면 이미 생성된것이므로 추가하지 않는다 | ||||
|                 //생성해야할 자료라면 만들어 준다 | ||||
|                 var newdr = dtInsert.NewMailDataRow(); | ||||
|                 newdr.pdate = pdate;// DateTime.Now.ToString("yyyy-MM-dd"); | ||||
|                 newdr.gcode = dr.gcode; | ||||
|                 newdr.fromlist = dr.fromlist; | ||||
|                 newdr.tolist = dr.tolist; | ||||
|                 newdr.bcc = dr.bcc; | ||||
|                 newdr.cate = cate;// string.Format("{0},{1}", dr.sday[0], dr.sday[1]);    //cate에 해당 자료를 기록한다. | ||||
|                 newdr.cc = dr.cc; | ||||
|                 newdr.subject = dr.subject; | ||||
|                 newdr.body = dr.body; | ||||
|                 newdr.aidx = dr.idx; | ||||
|                 newdr.atime = dr.stime; | ||||
|                 newdr.wuid = "MANAGER"; | ||||
|                 newdr.wdate = DateTime.Now; | ||||
|                 dtInsert.AddMailDataRow(newdr); | ||||
|                 try | ||||
|                 { | ||||
|                     taData.Update(newdr); | ||||
|                     Console.WriteLine("auto make : " + newdr.tolist + ",subject=" + newdr.subject); | ||||
|                 } | ||||
|                 catch (Exception eX) | ||||
|                 { | ||||
|                     Console.WriteLine("auto make error : " + eX.Message); | ||||
|                 } | ||||
|             } | ||||
|             ChkAutoDate = DateTime.Now; | ||||
|         } | ||||
|  | ||||
|         static string getMaillist(string org) | ||||
|         { | ||||
|             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; | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 chikyun.kim
					chikyun.kim