/// <summary>
        /// 新增
        /// </summary>
        public int Insert(EmailInfoEntity model)
        {
            Dictionary <string, object> dic = new Dictionary <string, object>();

            if (model.EmailTitle != null)
            {
                dic["EmailTitle"] = model.EmailTitle;
            }
            //dic["EmailCreateTime"] = model.EmailCreateTime;
            //dic["EmailLastTime"] = model.EmailLastTime;
            if (model.EmailFilePath != null)
            {
                dic["EmailFilePath"] = model.EmailFilePath;
            }
            dic["EmailState"]         = model.EmailState;
            dic["EmailStartSendTime"] = model.EmailStartSendTime;
            dic["TotalQty"]           = model.TotalQty;
            dic["EmailStartSendTime"] = model.EmailStartSendTime;
            return(SQLHelperFactory.Instance.QueryForObjectByT <int>("Insert_emailinfo", dic));
        }
        /// <summary>
        /// 修改
        /// </summary>
        public bool Update(EmailInfoEntity model)
        {
            Dictionary <string, object> dic = new Dictionary <string, object>();

            dic["EmailID"] = model.EmailID;

            //if (model.EmailTitle != null)
            //{
            //    dic["EmailTitle"] = model.EmailTitle;
            //}
            //dic["EmailCreateTime"] = model.EmailCreateTime;
            //dic["EmailLastTime"] = model.EmailLastTime;
            //if (model.EmailFilePath != null)
            //{
            //    dic["EmailFilePath"] = model.EmailFilePath;
            //}
            dic["FailQty"]    = model.FailQty;
            dic["EmailState"] = model.EmailState;
            //dic["EmailStartSendTime"] = model.EmailStartSendTime;
            return(SQLHelperFactory.Instance.ExecuteNonQuery("Update_emailinfo", dic) > 0);
        }
Beispiel #3
0
        private void BtnOperation_Click(object sender, RoutedEventArgs e)
        {
            Button bt = sender as Button;

            if (bt != null && bt.Tag != null)
            {
                var emailInfo = EmailInfoList.FirstOrDefault(p => p.EmailID == (int)bt.Tag);
                if (emailInfo != null && emailInfo.EmailID > 0)
                {
                    EmailInfoEntity entity = new EmailInfoEntity();
                    entity.EmailID = emailInfo.EmailID;
                    switch (emailInfo.EmailState)
                    {
                    case 0:
                        //設置停止發送
                        entity.EmailState = 4;
                        //修改密送記錄的郵件狀態
                        ESBAR_Repository.Update(emailInfo.EmailID, 2, 0);
                        break;

                    case 2:
                        //設置開始發送
                        entity.EmailState = 0;
                        break;

                    case 4:
                        //設置繼續發送
                        entity.EmailState = 0;
                        //修改密送記錄的郵件狀態
                        ESBAR_Repository.Update(emailInfo.EmailID, 0, 2);
                        break;
                    }
                    EI_Repository.Update(entity);
                    GetList();
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// 發送郵件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnSend_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrWhiteSpace(htmlEditor.ContentHtml))
            {
                "郵件内容不能爲空".ShowDialog();
                return;
            }
            DateTime?startDatetime = null;

            if ((!dpSendDate.SelectedDate.HasValue && tpSendTime.SelectedTime.HasValue) || (dpSendDate.SelectedDate.HasValue && !tpSendTime.SelectedTime.HasValue))
            {
                "請選擇發送日期/時間".ShowDialog();
                return;
            }
            if (dpSendDate.SelectedDate.HasValue && tpSendTime.SelectedTime.HasValue)
            {
                startDatetime = dpSendDate.SelectedDate.Value;
                startDatetime = startDatetime.Value.AddHours(tpSendTime.SelectedTime.Value.Hour);
                startDatetime = startDatetime.Value.AddMinutes(tpSendTime.SelectedTime.Value.Minute);
            }


            #region 判斷有沒填寫發件人抄送人
            if (_SendMailList.Count == 0)
            {
                "你還沒填寫發件人!".ShowDialog();
                return;
            }
            if (_BccMailList.Count == 0)
            {
                "你還沒填寫抄送人!".ShowDialog();
                return;
            }
            #endregion

            EmailInfoEntity email = new EmailInfoEntity();
            email.EmailTitle    = tbTheme.Text;
            email.EmailFilePath = htmlEditor.ContentHtml;
            email.EmailState    = 2;//新增的時候,是草稿狀態;等新增完成會修改狀態為0
            email.TotalQty      = _BccMailList.Count;
            if (startDatetime.HasValue)
            {
                email.EmailStartSendTime = startDatetime.Value;
            }

            Thread thread = new Thread(s =>
            {
                Stopwatch st = new Stopwatch();
                st.Start();
                int bccTotal = _BccMailList.Count;
                this.Dispatcher.BeginInvoke(MainWindow.ShowMessage, string.Format("正在新增邮件,进度:{0}/{1},耗時:{2}秒", 0, bccTotal, 0));

                //新增郵件
                int EmailID = ER_Repository.Insert(email);
                if (EmailID <= 0)
                {
                    return;
                }
                foreach (var send in _SendMailList)
                {
                    EmailSendAccountEntity entity = new EmailSendAccountEntity();
                    entity.EmailID        = EmailID;
                    entity.EmailAccountID = send.EmailAccountID;
                    ESR_Repository.Insert(entity);
                }


                //LogHelper.Info("插入發送信息時間:" + DateTime.Now + ",插入密送人數量:" + _BccMailList.Count);
                int bccCount = 0;
                List <EmailSendBccAccountEntity> sendBcc = new List <EmailSendBccAccountEntity>();
                foreach (var bcc in _BccMailList)
                {
                    bccCount++;
                    EmailSendBccAccountEntity entity = new EmailSendBccAccountEntity();
                    entity.EmailID                  = EmailID;
                    entity.EmailBccAccountID        = bcc.EmailBccAccountID;
                    entity.EmailSendBccAccountState = 0;
                    sendBcc.Add(entity);
                    if (bccCount > 100)
                    {
                        ESBR_Repository.InsertBatch(sendBcc);
                        this.Dispatcher.BeginInvoke(MainWindow.ShowMessage, string.Format("新增郵件中,進度:{0}/{1},耗時:{2}秒", bccCount, bccTotal, st.ElapsedMilliseconds / 1000));
                        sendBcc.Clear();
                    }
                }
                if (sendBcc.Count > 0)
                {
                    ESBR_Repository.InsertBatch(sendBcc);
                }

                email.EmailID    = EmailID;
                email.EmailState = 0;
                ER_Repository.Update(email);
                st.Stop();
                this.Dispatcher.BeginInvoke(MainWindow.ShowMessage, string.Format("新增邮件完成,进度:{0}/{1},耗時:{2}秒", bccCount, bccTotal, st.ElapsedMilliseconds / 1000));
                _SendMailList.Clear();
                _BccMailList.Clear();
            });
            thread.Start();
            "正在後臺進行郵件新建,將會關閉當前窗口,草稿狀態==正在創建郵件中".ShowDialog();

            this.Dispatcher.BeginInvoke(MainWindow.GotoPage, "郵件管理");

            ClearControl();
        }
Beispiel #5
0
        public static Boolean SendAlarmMail(IList<MoreThanTenDaysOrderInfoEntity> UnauditedOrNotOutStockList, string strMailFrom,
            string strMailAddress, string strCCMailAddress, string strMailSubject, string strMailTitle) {
                EmailInfoEntity mail = new EmailInfoEntity();
                mail.MailFrom = strMailFrom;
                mail.CCMailAddress = strCCMailAddress;
                mail.MailAddress = strMailAddress;
                mail.MailSubject = strMailSubject;
                StringBuilder mailBody = new StringBuilder();
                mailBody.Append(strMailTitle);
                mailBody.Append("<br>");
                mailBody.Append("<table border=\"1\"><tr><td>订单编号</td><td>FP状态</td><td>订单状态</td><td>总金额</td><td>订单时间</td><td>付款方式</td><td>配送方式</td><td>收款状态</td><td>更新人</td><td>是否超过90天</td></tr>");
                if (UnauditedOrNotOutStockList.Count > 0)
                {
                    string CheckoutStatusName = string.Empty;
                    string OrderStatusName = string.Empty;
                    string FPStatus = string.Empty;
                    foreach (MoreThanTenDaysOrderInfoEntity orderItem in UnauditedOrNotOutStockList)
                    {
                        #region 订单状态
                        if (orderItem.OrderStatus == 0)
                        {
                            OrderStatusName = "待审核";
                        }
                        else if (orderItem.OrderStatus == 1)
                        {
                            OrderStatusName = "待出库";
                        }
                        else if (orderItem.OrderStatus == 2)
                        {
                            OrderStatusName = "待支付";
                        }
                        else if (orderItem.OrderStatus == 3)
                        {
                            OrderStatusName = "待主管审";
                        }
                        #endregion

                        #region FP状态设置
                        if (orderItem.IsFPSO.HasValue == false)
                        {
                            FPStatus = "";
                        }
                        else if (orderItem.IsFPSO.Value == 0)
                        {
                            FPStatus = "正常单";
                        }
                        else if (orderItem.IsFPSO.Value == 1)
                        {
                            FPStatus = "可疑订单";
                        }
                        else if (orderItem.IsFPSO.Value == 2)
                        {
                            FPStatus = "串货订单";
                        }
                        else if (orderItem.IsFPSO.Value == 3)
                        {
                            FPStatus = "炒货订单";
                        }


                        #endregion

                        #region 结账状态
                        if (orderItem.CheckoutStatus.HasValue == false)
                        {
                            CheckoutStatusName = "";
                        }
                        else if (orderItem.CheckoutStatus == 1)
                        {
                            CheckoutStatusName = "已结账";
                        }
                        else
                        {
                            CheckoutStatusName = "未结账";
                        }
                        #endregion
                        mailBody.Append("<tr>");
                        mailBody.Append("<td>" + orderItem.SysNo + "&nbsp" + "</td>");
                        mailBody.Append("<td>" + FPStatus + "&nbsp" + "</td>");
                        mailBody.Append("<td>" + OrderStatusName + "&nbsp" + "</td>");
                        mailBody.Append("<td>" + orderItem.SOAmt + "&nbsp" + "</td>");
                        mailBody.Append("<td>" + orderItem.OrderDate.ToString() + "&nbsp" + "</td>");
                        mailBody.Append("<td>" + orderItem.PayTypeName + "&nbsp" + "</td>");
                        mailBody.Append("<td>" + orderItem.ShipTypeName + "&nbsp" + "</td>");
                        mailBody.Append("<td>" + CheckoutStatusName + "&nbsp" + "</td>");
                        mailBody.Append("<td>" + orderItem.UpdateUserSysName + "&nbsp" + "</td>");
                        mailBody.Append("<td>" + orderItem.IsMoreThan90Days + "&nbsp" + "</td>");
                        mailBody.Append("</tr>");
                    }
                }
                mailBody.Append("</table>");
                mail.MailBody = mailBody.ToString();
                
            //把捞到的邮件数据插入表
                MailBodyV31 mailBodyV31 = new Utility.Email.DataContracts.MailBodyV31();
                try
                {
                    MailHelper.SendMail2IPP3Internal(mailBodyV31);
                }
                catch (BusinessException e)
                {
                    Console.WriteLine("错误原因" + e);
                }
                return true;
        }
Beispiel #6
0
        static void Main(string[] args)
        {
            EmailInfoRepository ei   = new EmailInfoRepository();
            EmailInfoEntity     info = ei.Get("27");

            try
            {
                #region 设置基本信息
                CDO.Message oMsg = new CDO.Message();

                Configuration conf = new ConfigurationClass();
                conf.Fields[CdoConfiguration.cdoSendUsingMethod].Value  = CdoSendUsing.cdoSendUsingPort;
                conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value = CdoProtocolsAuthentication.cdoBasic;
                conf.Fields[CdoConfiguration.cdoSMTPUseSSL].Value       = false;
                conf.Fields[CdoConfiguration.cdoSMTPServer].Value       = "smtp.sina.com";//必填,而且要真实可用
                conf.Fields[CdoConfiguration.cdoSMTPServerPort].Value   = 25;
                conf.Fields[CdoConfiguration.cdoSendEmailAddress].Value = "*****@*****.**";
                conf.Fields[CdoConfiguration.cdoSendUserName].Value     = "*****@*****.**"; //真实的邮件地址
                conf.Fields[CdoConfiguration.cdoSendPassword].Value     = "5e5d277c167bd275";     //为邮箱密码,必须真实
                //5e5d277c167bd275
                conf.Fields.Update();
                oMsg.Configuration = conf;
                #endregion 设置基本信息

                #region htmlbody

                string        bodyStr = "test11";
                List <string> strList = MailHelper.GetHtmlImageUrlList(bodyStr);
                Dictionary <string, string> dicImage = new Dictionary <string, string>();
                foreach (var str in strList)
                {
                    string key    = Guid.NewGuid().ToString();
                    string newUrl = "cid:" + key;
                    bodyStr = bodyStr.Replace(str, newUrl);
                    dicImage.Add(key, str);
                }
                oMsg.HTMLBody = info.EmailFilePath;

                #endregion
                StringBuilder title = new StringBuilder();
                title.Append("=?BIG5?B?");
                title.Append(ToBase64("titleTest"));
                title.Append("?=");
                oMsg.Subject = title.ToString();
                oMsg.From    = "\"" + "River" + "\"" + "*****@*****.**";
                ;//真实的邮件地址
                #region BCC
                StringBuilder bccs = new StringBuilder();
                bccs.Append("[email protected];");


                oMsg.BCC = bccs.ToString();
                #endregion BCC
                oMsg.HTMLBodyPart.Charset = "BIG5";


                oMsg.Send();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void SendEmail(EmailInfoEntity emailInfo, EmailAccountEntity emailAccount, List <EmailSendBccAccountEntity> toMails)
        {
            try
            {
                #region 设置基本信息
                CDO.Message oMsg = new CDO.Message();

                Configuration conf = new ConfigurationClass();
                conf.Fields[CdoConfiguration.cdoSendUsingMethod].Value  = CdoSendUsing.cdoSendUsingPort;
                conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value = CdoProtocolsAuthentication.cdoBasic;
                conf.Fields[CdoConfiguration.cdoSMTPUseSSL].Value       = emailAccount.EmailAccountIsSSL == 1;
                conf.Fields[CdoConfiguration.cdoSMTPServer].Value       = emailAccount.EmailAccountSMTP;//必填,而且要真实可用
                conf.Fields[CdoConfiguration.cdoSMTPServerPort].Value   = emailAccount.EmailAccountSMTPPort;
                conf.Fields[CdoConfiguration.cdoSendEmailAddress].Value = emailAccount.EmailAccountAddress;
                conf.Fields[CdoConfiguration.cdoSendUserName].Value     = emailAccount.EmailAccountAddress;  //真实的邮件地址
                conf.Fields[CdoConfiguration.cdoSendPassword].Value     = emailAccount.EmailAccountPassWord; //为邮箱密码,必须真实

                conf.Fields.Update();
                oMsg.Configuration = conf;
                #endregion 设置基本信息

                #region htmlbody

                string        bodyStr = emailInfo.EmailFilePath;
                List <string> strList = MailHelper.GetHtmlImageUrlList(bodyStr);
                Dictionary <string, string> dicImage = new Dictionary <string, string>();
                foreach (var str in strList)
                {
                    string key    = Guid.NewGuid().ToString();
                    string newUrl = "cid:" + key;
                    bodyStr = bodyStr.Replace(str, newUrl);
                    dicImage.Add(key, str);
                }
                oMsg.HTMLBody = bodyStr;
                #endregion
                StringBuilder title = new StringBuilder();
                title.Append("=?BIG5?B?");
                title.Append(ToBase64(emailInfo.EmailTitle));
                title.Append("?=");
                oMsg.Subject = title.ToString();
                oMsg.From    = "\"" + emailAccount.EmailAccountName + "\"" + emailAccount.EmailAccountAddress;
                ;//真实的邮件地址
                #region BCC
                StringBuilder bccs = new StringBuilder();
                foreach (EmailSendBccAccountEntity to in toMails)
                {
                    try
                    {
                        //还要加上邮箱的正确性检验
                        if (!string.IsNullOrEmpty(to.EmailBccAccountAddress)) //&& MailHelper.IsEmail(to.EmailBccAccountInfo.EmailBccAccountAddress))
                        {
                            bccs.Append(to.EmailBccAccountAddress + ";");
                            to.EmailSendBccAccountState = 1;
                            to.Result = "成功";
                        }
                        else
                        {
                            to.EmailSendBccAccountState = -1;
                            to.Result = "收件箱地址不正确";
                        }
                    }
                    catch (Exception ex)
                    {
                        to.EmailSendBccAccountState = -1;
                        to.Result = "收件箱地址不正确:" + ex.Message;
                    }
                }

                oMsg.BCC = bccs.ToString();
                #endregion BCC
                oMsg.HTMLBodyPart.Charset = "BIG5";

                foreach (var imgUrl in dicImage)
                {
                    oMsg.AddRelatedBodyPart(imgUrl.Value, imgUrl.Key, CdoReferenceType.cdoRefTypeId);
                }
                lock (SendLock)
                {
                    Constants.SleepInterval(Constants.SendWaitTime);
                    LogHelper.Debug(string.Format("CDOSendEmail 发送邮件开始: 发件箱【{0}:{1}】发送邮件【{2} ->{3}】", emailAccount.EmailAccountID, emailAccount.EmailAccountAddress, emailInfo.EmailID, emailInfo.EmailTitle));
                    oMsg.Send();
                    LogHelper.Debug(string.Format("CDOSendEmail 发送邮件完成: 发件箱【{0}:{1}】发送邮件【{2} ->{3}】完成", emailAccount.EmailAccountID, emailAccount.EmailAccountAddress, emailInfo.EmailID, emailInfo.EmailTitle));
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("CDOSendEmail 发送邮件异常: 发件箱【{0}:{1}】发送邮件【{2} ->{3}】Exception:{4}", emailAccount.EmailAccountID, emailAccount.EmailAccountAddress, emailInfo.EmailID, emailInfo.EmailTitle, ex.Message), ex);
                throw ex;
            }
        }