챔피언
This commit is contained in:
@@ -11,8 +11,26 @@ namespace Project
|
||||
{
|
||||
public partial class fMain
|
||||
{
|
||||
DateTime redisTryTime = DateTime.Parse("1982-11-23");
|
||||
//DateTime redisTryTime = DateTime.Parse("1982-11-23");
|
||||
Boolean bBW = true;
|
||||
DateTime ChkMakeAutoTime = DateTime.Now.AddDays(-1);
|
||||
DateTime ChkSendMailTime = DateTime.Now.AddDays(-1);
|
||||
DateTime ChkMakeSchDayWeekTime = DateTime.Now.AddDays(-1);
|
||||
DateTime ChkMakeSchDay = DateTime.Now.AddDays(-1);
|
||||
DateTime ChkNoSchedule = DateTime.Now.AddDays(-1);
|
||||
DateTime ChkJobreportDay = DateTime.Now.AddDays(-1);
|
||||
DateTime ChkJObreportWeek = DateTime.Now.AddDays(-1);
|
||||
|
||||
public 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);
|
||||
}
|
||||
|
||||
string getdbdata(object tdata)
|
||||
{
|
||||
@@ -45,89 +63,6 @@ namespace Project
|
||||
return list_to;
|
||||
}
|
||||
|
||||
DateTime ChkAutoDate = DateTime.Now;
|
||||
|
||||
void MakeAutoMail()
|
||||
{
|
||||
var ts = DateTime.Now - ChkAutoDate;
|
||||
if (ts.TotalMinutes < 1) return; //10분마다 자동 생성 데이터를 처리한다
|
||||
Console.WriteLine("Check Auto Make Mail");
|
||||
|
||||
var taData = new dsMSSQLTableAdapters.MailDataTableAdapter();
|
||||
var taList = new dsMSSQLTableAdapters.MailAutoTableAdapter();
|
||||
var dtList = taList.GetByAutoSend();
|
||||
var dtInsert = new dsMSSQL.MailDataDataTable();
|
||||
|
||||
//대상
|
||||
Console.WriteLine("Make Auto Send Mail Data (" + dtList.Rows.Count.ToString() + ")");
|
||||
|
||||
foreach (dsMSSQL.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 = "DEV";
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void bw_DoWork(object sender, DoWorkEventArgs e)
|
||||
@@ -135,163 +70,86 @@ namespace Project
|
||||
while (bBW)
|
||||
{
|
||||
ServerUtil.IsMailserver = ServerUtil.SendmailSet();
|
||||
|
||||
if (ServerUtil.IsMailserver)
|
||||
if (ServerUtil.IsMailserver && System.Diagnostics.Debugger.IsAttached == false)
|
||||
{
|
||||
//메일서버역할이 있다.
|
||||
try
|
||||
//메일대기내역전송
|
||||
var tsSendMail = DateTime.Now - ChkSendMailTime;
|
||||
if (tsSendMail.TotalMilliseconds > 1000)
|
||||
{
|
||||
var cn = new System.Data.SqlClient.SqlConnection(Properties.Settings.Default.gwcs);
|
||||
var cmd = new System.Data.SqlClient.SqlCommand("", cn);
|
||||
cn.Open();
|
||||
|
||||
//1개의데이터 가져오기
|
||||
cmd.CommandText = "SELECT top 1 * FROM MailData WHERE ISNULL(SendOK, 0) = 0 order by wdate";
|
||||
var dar = cmd.ExecuteReader();
|
||||
|
||||
var list_from = string.Empty;// getMaillist(dar["fromlist"]);
|
||||
var list_to = string.Empty;// getMaillist(dar["tolist"]);
|
||||
var list_bcc = string.Empty;// getMaillist(dar["bcc"]);
|
||||
var list_cc = string.Empty;//getMaillist(dar["cc"]);
|
||||
var subject = string.Empty;// getdbdata(dar["subject"]).Trim();
|
||||
var body = string.Empty;//getdbdata(dar["body"]).Trim();
|
||||
var idx = -1;
|
||||
|
||||
|
||||
while (dar.Read())
|
||||
{
|
||||
list_from = getMaillist(dar["fromlist"]);
|
||||
list_to = getMaillist(dar["tolist"]);
|
||||
list_bcc = getMaillist(dar["bcc"]);
|
||||
list_cc = getMaillist(dar["cc"]);
|
||||
|
||||
subject = getdbdata(dar["subject"]).Trim();
|
||||
body = getdbdata(dar["body"]).Trim();
|
||||
idx = (int)dar["idx"];
|
||||
}
|
||||
dar.Close();
|
||||
|
||||
string sendMsg = "";
|
||||
if (list_from == "")
|
||||
{
|
||||
sendMsg = ("보내는 주소가 없습니다");
|
||||
}
|
||||
else if (subject.Trim() == "")
|
||||
{
|
||||
sendMsg = ("메일 제목이 없습니다");
|
||||
}
|
||||
else if (body.Trim() == "")
|
||||
{
|
||||
sendMsg = ("본문이 없습니다");
|
||||
}
|
||||
else if (list_to == "")
|
||||
{
|
||||
sendMsg = ("받는 주소가 없습니다");
|
||||
}
|
||||
|
||||
if (sendMsg.isEmpty()==false)
|
||||
{
|
||||
//오류가 있다
|
||||
try
|
||||
{
|
||||
cmd.CommandText = "UPDATE MailData SET SendOK = 1, SendMsg = @msg WHERE(idx = @idx) and isnull(sendok,0) = 0";
|
||||
cmd.Parameters.Clear();
|
||||
cmd.Parameters.Add("msg", System.Data.SqlDbType.VarChar).Value = sendMsg;
|
||||
cmd.Parameters.Add("idx", System.Data.SqlDbType.Int).Value = idx;
|
||||
//Console.WriteLine(string.Format("Send Complete index={0},Msg={1}", dar["idx"], sendMsg));
|
||||
//ta.UpdateSendOK(sendMsg, dr.idx);
|
||||
var ucnt = cmd.ExecuteNonQuery();
|
||||
if (ucnt == 1)
|
||||
{
|
||||
Console.WriteLine("send mail to" + list_to + ",subject=" + getdbdata(subject));
|
||||
}
|
||||
}
|
||||
catch (Exception eX)
|
||||
{
|
||||
sendMsg = eX.Message;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//var body = getdbdata(dar["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,
|
||||
subject,
|
||||
body);
|
||||
|
||||
if (list_bcc != "") msg.Bcc.Add(list_bcc);
|
||||
if (list_cc != "") msg.CC.Add(list_cc);
|
||||
msg.IsBodyHtml = true;
|
||||
|
||||
bool msgupdate = false;
|
||||
try
|
||||
{
|
||||
sendMsg = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
cmd.CommandText = "UPDATE MailData SET SendOK = 1, SendMsg = @msg WHERE(idx = @idx) and isnull(sendok,0) = 0";
|
||||
cmd.Parameters.Clear();
|
||||
cmd.Parameters.Add("msg", System.Data.SqlDbType.VarChar).Value = sendMsg;
|
||||
cmd.Parameters.Add("idx", System.Data.SqlDbType.Int).Value = idx;
|
||||
//Console.WriteLine(string.Format("Send Complete index={0},Msg={1}", dar["idx"], sendMsg));
|
||||
//ta.UpdateSendOK(sendMsg, dr.idx);
|
||||
var ucnt = cmd.ExecuteNonQuery();
|
||||
if (ucnt == 1)
|
||||
{
|
||||
mc.Send(msg);
|
||||
Console.WriteLine("send mail to" + list_to + ",subject=" + getdbdata(subject));
|
||||
}
|
||||
}
|
||||
catch (Exception eX)
|
||||
{
|
||||
sendMsg = eX.Message;
|
||||
msgupdate = true;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (msgupdate)
|
||||
{
|
||||
cmd.CommandText = "UPDATE MailData SET SendMsg = @msg WHERE idx = @idx ";
|
||||
cmd.Parameters.Clear();
|
||||
cmd.Parameters.Add("idx", System.Data.SqlDbType.Int).Value = idx;
|
||||
var ucnt = cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
catch (Exception eX)
|
||||
{
|
||||
//sendMsg = eX.Message;
|
||||
//msgupdate = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
cmd.Dispose();
|
||||
cn.Close();
|
||||
try { SendMail(); }
|
||||
catch { }
|
||||
finally { ChkSendMailTime = DateTime.Now; }
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
//자동생성 메일 작성
|
||||
var tsAutoMake = DateTime.Now - ChkMakeAutoTime;
|
||||
if (tsAutoMake.TotalMinutes >= 10)
|
||||
{
|
||||
try { MakeAutoMail(); }
|
||||
catch { }
|
||||
finally { ChkMakeAutoTime = DateTime.Now; }
|
||||
}
|
||||
|
||||
///스케쥴 기한 알림(주)
|
||||
var tsScheDayweek = DateTime.Now - ChkMakeSchDayWeekTime;
|
||||
if (tsScheDayweek.TotalMinutes > 15 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 10)
|
||||
{
|
||||
|
||||
try { MakeScheduleDayWeek(); }
|
||||
catch { }
|
||||
finally { ChkMakeSchDayWeekTime = DateTime.Now; }
|
||||
}
|
||||
System.Threading.Thread.Sleep(1500);
|
||||
try
|
||||
{
|
||||
MakeAutoMail();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
///스케쥴 기한 알림(일)
|
||||
var tsScheDay = DateTime.Now - ChkMakeSchDay;
|
||||
if (tsScheDay.TotalMinutes > 15 && DateTime.Now.DayOfWeek != DayOfWeek.Saturday &&
|
||||
DateTime.Now.DayOfWeek != DayOfWeek.Sunday && DateTime.Now.Hour >= 10)
|
||||
{
|
||||
|
||||
try { MakeScheduleDay(); }
|
||||
catch { }
|
||||
finally { ChkMakeSchDay = DateTime.Now; }
|
||||
}
|
||||
System.Threading.Thread.Sleep(500);
|
||||
|
||||
///스케쥴없음
|
||||
var tsNoSchedule = DateTime.Now - ChkNoSchedule;
|
||||
if (tsNoSchedule.TotalMinutes > 15 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 10)
|
||||
{
|
||||
|
||||
try { Mail_NoSchedule(); }
|
||||
catch { }
|
||||
finally { ChkNoSchedule = DateTime.Now; }
|
||||
}
|
||||
|
||||
///업무일지(주간)
|
||||
var tsjobweek = DateTime.Now - ChkJObreportWeek;
|
||||
if (tsjobweek.TotalMinutes > 15 && DateTime.Now.DayOfWeek == DayOfWeek.Monday && DateTime.Now.Hour >= 9)
|
||||
{
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
try { Mail_JobReportDay(); }
|
||||
catch { }
|
||||
finally { ChkJobreportDay = DateTime.Now; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
System.Threading.Thread.Sleep(1000);
|
||||
}
|
||||
else System.Threading.Thread.Sleep(3000);
|
||||
else System.Threading.Thread.Sleep(60000); //메일서비스사용안하므로 1분정도 지연한다
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user