Example #1
0
 private bool sendMail(sendMailAddr model, string sfrom = null, string sfromer = null, string sSubject = null, string sBody = null, string[] sfile = null, string sSMTPHost = null, string sSMTPuser = null, string sSMTPpass = null)
 {
     if (model.list_Toer.Count <= 0)
     {
         throw new Exception("model list have no member!");
     }
     if (sendM == null)
     {
         sendM = new sendMail();
     }
     return(sendM.sendmail2Many(model.from, model.list_Toer,
                                string.IsNullOrEmpty(sSubject)?model.subject:sSubject,
                                string.IsNullOrEmpty(sBody) ? model.mailBody:sBody,
                                (sfile == null || sfile.Length <= 0) ? model.list_files.ToArray():sfile,
                                string.IsNullOrEmpty(sSMTPHost) ? model.SMTPHost:sSMTPHost,
                                string.IsNullOrEmpty(sSMTPuser) ? model.SMTPPuser:sSMTPuser,
                                string.IsNullOrEmpty(sSMTPpass) ? model.SMTPPass:sSMTPpass));
 }
Example #2
0
        private bool send2MailGroup(Guid groupId, List <string> files)
        {
            try {
                using (ksoaContext db = new ksoaContext())
                {
                    sendMailAddr loc_ar = (from q in db.alarmAddr_realations
                                           from p in db.alarm_MailAddr
                                           where q.guid == groupId && q.addr_Id_Main == p.ID && q.relation_Type == (int)AddrRealationType.GROUP
                                           select
                                           new sendMailAddr
                    {
                        ID = q.addr_Id_Main,
                        subject = p.subject,
                        fileBasePath = p.fileBasePath,
                        sendFile = p.sendFile,
                        SMTPHost = p.SMTPHost,
                        SMTPPass = p.SMTPPass,
                        SMTPPuser = p.SMTPPuser,
                        mailBody = p.mailBody,
                        sendTimeSpan = p.sendTimeSpan
                    }
                                           ).ToList().First();
                    loc_ar.list_Toer  = (from q in addr_List from p in db.alarmAddr_realationsD where p.guid == groupId && p.addr_Id_attached == q.ID select new tag_terminal {
                        addr = q.mailAddress, showName = q.senderName
                    }).ToList();
                    loc_ar.from       = (from q in addr_List where q.ID == loc_ar.ID select new tag_terminal {
                        addr = q.mailAddress, showName = q.senderName
                    }).First();
                    loc_ar.list_files = files;

                    sendMail(loc_ar);
                }
            }
            catch (Exception e1)
            {
                throw new Exception("Send group mail:" + e1.Message);
            }
            return(true);
        }
Example #3
0
        private void timerPro(object sender, System.Timers.ElapsedEventArgs e)
        {//DateTime.Parse(DateTime.Now.ToLongTimeString())>= DateTime.Parse(dtp_timeLimit.Value.ToLongTimeString())
            bool onTime = false;

            if ((precision) == DatePart.HOUR && DateTime.Now.Hour == dtp_timeLimit.Value.Hour)
            {
                onTime = true;
            }
            else
            if ((precision) == DatePart.MINUTE && DateTime.Now.Hour == dtp_timeLimit.Value.Hour && DateTime.Now.Minute == dtp_timeLimit.Value.Minute)
            {
                onTime = true;
            }
            else
            if ((precision) == DatePart.SECEND && DateTime.Now.Hour == dtp_timeLimit.Value.Hour && DateTime.Now.Minute == dtp_timeLimit.Value.Minute && DateTime.Now.Second == dtp_timeLimit.Value.Second)
            {
                onTime = true;
            }
            //return;
            if (bol_running && !bol_alarming && ((cb_isLimitSend.Checked && onTime) || !cb_isLimitSend.Checked))
            {
                bol_alarming = true;
                string        loc_file     = "";
                int           Dcount       = 0;
                StringBuilder sb           = new StringBuilder();
                Random        rand         = new Random(DateTime.Now.Second);
                string        loc_fileName = string.Format(fileName, DateTime.Now.ToString("yyyy-MM-dd") + DateTime.Now.Second + rand.Next());
                try
                {
                    using (ksoaContext db = new ksoaContext())
                    {
                        //var query = (from q in db.alarm_MailAddr where q.IsDeleted==false&& DbFunctions.DiffMinutes(q.lastSendDate, DateTime.Now ) >= q.sendTimeSpan select q).ToList();
                        var                    query    = addr_List.AsEnumerable().Where(q => q.IsDeleted == false && DateTime.Now.AddMinutes(-q.sendTimeSpan) > q.lastSendDate).ToList();
                        sendMailAddr           loc_addr = new sendMailAddr();
                        tag_terminal           loc_point;
                        List <stock_alarm_GSA> list_goods;

                        Subject = string.Format(Subject, DateTime.Now.ToString("yyyy-MM-dd"));
                        if (query.Count > 0)
                        {
                            var loc_item = query.First(q =>
                                                       !string.IsNullOrEmpty(q.SMTPPuser) &&
                                                       !string.IsNullOrEmpty(q.mailBody) &&
                                                       !string.IsNullOrEmpty(q.senderAddr) &&
                                                       !string.IsNullOrEmpty(q.senderName) &&
                                                       !string.IsNullOrEmpty(q.SMTPHost) &&
                                                       !string.IsNullOrEmpty(q.SMTPPass) &&
                                                       !string.IsNullOrEmpty(q.subject)
                                                       );
                            checkTimes(DateTime.Now, loc_item.fileBasePath, loc_fileName, out Dcount, out list_goods);
                            if (Dcount > 0)
                            {
                                loc_file = file = loc_item.fileBasePath + loc_fileName;

                                loc_addr.mailBody      = string.Format(loc_item.mailBody, Dcount.ToString());
                                loc_addr.SMTPHost      = loc_item.SMTPHost;
                                loc_addr.SMTPPass      = loc_item.SMTPPass;
                                loc_addr.SMTPPuser     = loc_item.SMTPPuser;
                                loc_addr.subject       = string.Format(loc_item.subject, DateTime.Now.ToString("yyyy-MM-dd"));
                                loc_addr.from.addr     = loc_item.senderAddr;
                                loc_addr.from.showName = loc_item.senderName;
                                loc_addr.list_Toer     = new List <tag_terminal>();
                                loc_addr.list_files    = new List <string>();
                                loc_addr.list_files.Add(loc_file);
                                foreach (var item in query)
                                {
                                    loc_point          = new tag_terminal();
                                    loc_point.addr     = item.mailAddress;
                                    loc_point.showName = item.toer;
                                    loc_addr.list_Toer.Add(loc_point);
                                }
                                // return;
                                if (sendMail(loc_addr))
                                {
                                    //times++;

                                    try {
                                        alarm_mailaddr loc_ma;
                                        //int aapo = 0;
                                        //Console.Write(1 / aapo);
                                        foreach (var item in query)
                                        {
                                            loc_ma = db.alarm_MailAddr.Find(item.ID);
                                            loc_ma.lastSendDate = DateTime.Now;
                                        }
                                        foreach (var item in list_goods)
                                        {
                                            db.stock_alarm_GSA.Find(item.ID).last_alarmDate = (DateTime.Now);
                                        }
                                        db.SaveChanges();
                                        dataRefresh();
                                        sb = new StringBuilder();
                                        sb.Append(DateTime.Now).Append("|商品库存预警邮件发送成功!共(").Append(Dcount).Append(")个商品.");
                                        log_operate.writeLog(string.Format(logFile, DateTime.Now.ToString("yyyy-MM-dd")), sb.ToString());
                                        stock_alarm_GSA_his hisModel;
                                        foreach (var item in list_goods)
                                        {
                                            hisModel                 = new stock_alarm_GSA_his();
                                            hisModel.IDS             = item.ID;
                                            hisModel.hw              = item.hw;
                                            hisModel.lastCalcuDate   = item.lastCalcuDate;
                                            hisModel.last_alarmDate  = item.last_alarmDate;
                                            hisModel.notice          = item.notice;
                                            hisModel.ordering_cycle  = item.ordering_cycle;
                                            hisModel.restock_count   = item.restock_count;
                                            hisModel.safty_days      = item.safty_days;
                                            hisModel.saledIn1Month   = item.saledIn1Month;
                                            hisModel.saledIn7Days    = item.saledIn7Days;
                                            hisModel.spbh            = item.spbh;
                                            hisModel.spid            = item.spid;
                                            hisModel.spmch           = item.spmch;
                                            hisModel.stock_5DLatter  = item.stock_5DLatter;
                                            hisModel.stock_transit   = item.stock_transit;
                                            hisModel.threshold_value = item.threshold_value;
                                            hisModel.delivery_cycle  = item.delivery_cycle;
                                            hisModel.amount_static   = item.amount_static;
                                            hisModel.alarm_type      = item.alarm_type;
                                            hisModel.alarm_state     = item.alarm_state;
                                            hisModel.alarmSpan       = item.alarmSpan;
                                            hisModel.add_date        = item.add_date;
                                            db.stock_alarm_GSA_his.Add(hisModel);
                                        }
                                        db.SaveChanges();
                                    }
                                    catch (Exception e1)
                                    {
                                        sb = new StringBuilder();
                                        sb.Append(DateTime.Now.ToString()).Append(":").
                                        Append(e1.Message).Append("\r\n\t\t").
                                        Append(e1.InnerException == null?"": (e1.InnerException.InnerException == null? e1.InnerException.Message: e1.InnerException.InnerException.Message));
                                        loc_addr.mailBody = sb.ToString();
                                        loc_addr.list_Toer.Clear();
                                        loc_addr.list_Toer.Add(loc_addr.from);
                                        sendMail(loc_addr);
                                        this.Invoke(new dosth(() => { btn_startWork.PerformClick(); }));
                                        log_operate.writeLog(string.Format(logFile, DateTime.Now.ToString("yyyy-MM-dd")), sb.ToString());
                                    }
                                }
                                else
                                {
                                    dataRefresh();
                                    sb = new StringBuilder();
                                    sb.Append(DateTime.Now).Append("|商品库存预警邮件发送失败!共(").Append(Dcount).Append(")个商品.");
                                    log_operate.writeLog(string.Format(logFile, DateTime.Now.ToString("yyyy-MM-dd")), sb.ToString());
                                }
                            }
                        }
                    }
                }
                catch (Exception e1)
                {
                    sb = new StringBuilder();
                    try {
                        sb.Append(DateTime.Now.ToString()).Append(":").Append(e1.Message).Append("\r\n\t\t").Append(e1.InnerException == null ? "" : e1.InnerException.Message);
                        log_operate.writeLog(string.Format(logFile, DateTime.Now.ToString("yyyy-MM-dd")), sb.ToString());
                    }
                    catch (Exception) { }
                    bol_alarming = false;
                    return;
                }
                bol_alarming = false;
            }
        }
Example #4
0
        private void timerPro(object sender, System.Timers.ElapsedEventArgs e)
        {
            if (bol_running && !bol_alarming)
            {
                bol_alarming = true;
                string loc_file     = "";
                int    Dcount       = 0;
                Random rand         = new Random(DateTime.Now.Second);
                string loc_fileName = string.Format(fileName, DateTime.Now.ToString("yyyy-MM-dd") + DateTime.Now.Second + rand.Next());

                using (ksoaContext db = new ksoaContext())
                {
                    //var query = (from q in db.alarm_MailAddr where q.IsDeleted==false&& DbFunctions.DiffMinutes(q.lastSendDate, DateTime.Now ) >= q.sendTimeSpan select q).ToList();
                    var          query    = addr_List.AsEnumerable().Where(q => q.IsDeleted == false && DateTime.Now.AddMinutes(-q.sendTimeSpan) > q.lastSendDate).ToList();
                    sendMailAddr loc_addr = new sendMailAddr();
                    tag_terminal loc_point;
                    if (query.Count > 0)
                    {
                        List <stock_alarm_GSA> list_goods;

                        Subject = string.Format(Subject, DateTime.Now.ToString("yyyy-MM-dd"));
                        Body    = string.Format(Body, Dcount.ToString());

                        var loc_item = query.First(q => !string.IsNullOrEmpty(q.SMTPPuser) &&
                                                   !string.IsNullOrEmpty(q.mailBody) &&
                                                   !string.IsNullOrEmpty(q.senderAddr) &&
                                                   !string.IsNullOrEmpty(q.senderName) &&
                                                   !string.IsNullOrEmpty(q.SMTPHost) &&
                                                   !string.IsNullOrEmpty(q.SMTPPass) &&
                                                   !string.IsNullOrEmpty(q.subject)
                                                   );
                        checkTimes(DateTime.Now, loc_item.fileBasePath, loc_fileName, out Dcount, out list_goods);
                        loc_file = file = loc_item.fileBasePath + loc_fileName;

                        loc_addr.mailBody      = string.Format(loc_item.mailBody, Dcount.ToString());
                        loc_addr.SMTPHost      = loc_item.SMTPHost;
                        loc_addr.SMTPPass      = loc_item.SMTPPass;
                        loc_addr.SMTPPuser     = loc_item.SMTPPuser;
                        loc_addr.subject       = string.Format(loc_item.subject, DateTime.Now.ToString("yyyy-MM-dd"));
                        loc_addr.from.addr     = loc_item.senderAddr;
                        loc_addr.from.showName = loc_item.senderName;
                        loc_addr.list_Toer     = new List <tag_terminal>();
                        loc_addr.list_files    = new List <string>();
                        loc_addr.list_files.Add(loc_file);
                        foreach (var item in query)
                        {
                            loc_point          = new tag_terminal();
                            loc_point.addr     = item.mailAddress;
                            loc_point.showName = item.toer;
                            loc_addr.list_Toer.Add(loc_point);
                        }
                        if (sendMail(loc_addr))
                        {
                            alarm_mailaddr loc_ma;

                            foreach (var item in query)
                            {
                                loc_ma = db.alarm_MailAddr.Find(item.ID);
                                loc_ma.lastSendDate = DateTime.Now;
                            }
                            foreach (var item in list_goods)
                            {
                                db.stock_alarm_GSA.Find(item.ID).last_alarmDate = (DateTime.Now);
                            }
                            db.SaveChanges();
                            dataRefresh();
                            StringBuilder sb = new StringBuilder();
                            sb.Append(DateTime.Now).Append("|商品库存预警邮件发送成功!共(").Append(Dcount).Append(")个商品.");
                            log_operate.writeLog(string.Format(logFile, DateTime.Now.ToString("yyyy-MM-dd")), sb.ToString());
                        }
                        else
                        {
                            dataRefresh();
                            StringBuilder sb = new StringBuilder();
                            sb.Append(DateTime.Now).Append("|商品库存预警邮件发送失败!共(").Append(Dcount).Append(")个商品.");
                            log_operate.writeLog(string.Format(logFile, DateTime.Now.ToString("yyyy-MM-dd")), sb.ToString());
                        }
                    }
                }
                bol_alarming = false;
            }
        }