/// <summary>
        /// 初始化
        /// </summary>
        private void init()
        {
            DataSet ds = new DataSet();

            if (db.GetPublishVW(0, 0, "*", "", "", ref ds))
            {
                dataGridView1.DataSource = ds.Tables[0];
                lblMailSendingN.Text     = Convert.ToString(ds.Tables[0].Rows.Count);
            }
        }
Beispiel #2
0
        /// <summary>
        /// 开始送信
        /// </summary>
        private static void startSend()
        {
            WorkQueue <MailPara> workQueue_Outlook = new WorkQueue <MailPara>(5);

            workQueue_Outlook.UserWork      += new UserWorkEventHandler <MailPara>(workQueue_UserWork);
            workQueue_Outlook.WorkSequential = true;

            WorkQueue <MailPara> workQueue_HotMail = new WorkQueue <MailPara>(5);

            workQueue_HotMail.UserWork      += new UserWorkEventHandler <MailPara>(workQueue_UserWork);
            workQueue_HotMail.WorkSequential = true;

            WorkQueue <MailPara> workQueue_GMail = new WorkQueue <MailPara>(5);

            workQueue_GMail.UserWork      += new UserWorkEventHandler <MailPara>(workQueue_UserWork);
            workQueue_GMail.WorkSequential = true;

            WorkQueue <MailPara> workQueue_YMail = new WorkQueue <MailPara>(5);

            workQueue_YMail.UserWork      += new UserWorkEventHandler <MailPara>(workQueue_UserWork);
            workQueue_YMail.WorkSequential = true;

            WorkQueue <MailPara> workQueue_AMail = new WorkQueue <MailPara>(5);

            workQueue_AMail.UserWork      += new UserWorkEventHandler <MailPara>(workQueue_UserWork);
            workQueue_AMail.WorkSequential = true;

            ThreadPool.QueueUserWorkItem(o =>
            {
                DataSet ds_Server = new DataSet();
                if (db.GetMailServer(0, 0, "*", "", "", ref ds_Server) && ds_Server.Tables[0].Rows.Count > 0)
                {
                    Hashtable ht = new Hashtable();
                    foreach (DataRow dr in ds_Server.Tables[0].Rows)
                    {
                        MailPara mp = new MailPara();
                        mp.name     = dr["名称"].ToString();
                        mp.address  = dr["地址"].ToString();
                        //mp.port = dr["端口"].ToString();
                        mp.user           = dr["用户"].ToString();
                        mp.password       = dr["密码"].ToString();
                        mp.from           = dr["送信人地址"].ToString();
                        mp.servertype     = dr["服务器类型"].ToString().Trim();
                        mp.attachement    = dr["添付文件"].ToString();
                        mp.isHtml         = dr["HTML"].ToString();
                        ht[mp.servertype] = mp;
                    }
                    DataSet ds      = new DataSet();
                    String strWhere = "送信状态='未送信'";
                    if (db.GetPublishVW(0, 0, "*", strWhere, "", ref ds))
                    {
                        int idx = 0;
                        while (idx < ds.Tables[0].Rows.Count)
                        {
                            if (workQueue_Outlook.getCount() < 5)
                            {
                                MailPara mp = getMailPara(ht, "OUTLOOK");
                                if (mp.servertype != null)
                                {
                                    mp = getMailPara(ds, idx, mp);
                                    workQueue_Outlook.EnqueueItem(mp);
                                    idx++;
                                    if (idx >= ds.Tables[0].Rows.Count)
                                    {
                                        break;
                                    }
                                }
                            }
                            if (workQueue_HotMail.getCount() < 5)
                            {
                                MailPara mp = getMailPara(ht, "HOTMAIL");
                                if (mp.servertype != null)
                                {
                                    mp = getMailPara(ds, idx, mp);
                                    workQueue_HotMail.EnqueueItem(mp);
                                    idx++;
                                    if (idx >= ds.Tables[0].Rows.Count)
                                    {
                                        break;
                                    }
                                }
                            }
                            if (workQueue_YMail.getCount() < 5)
                            {
                                MailPara mp = getMailPara(ht, "YAHOO");
                                if (mp.servertype != null)
                                {
                                    mp = getMailPara(ds, idx, mp);
                                    workQueue_YMail.EnqueueItem(mp);
                                    idx++;
                                    if (idx >= ds.Tables[0].Rows.Count)
                                    {
                                        break;
                                    }
                                }
                            }
                            if (workQueue_GMail.getCount() < 5)
                            {
                                MailPara mp = getMailPara(ht, "GMAIL");
                                if (mp.servertype != null)
                                {
                                    mp = getMailPara(ds, idx, mp);
                                    workQueue_GMail.EnqueueItem(mp);
                                    idx++;
                                    if (idx >= ds.Tables[0].Rows.Count)
                                    {
                                        break;
                                    }
                                }
                            }
                            if (workQueue_AMail.getCount() < 5)
                            {
                                MailPara mp = getMailPara(ht, "AOL");
                                if (mp.servertype != null)
                                {
                                    mp = getMailPara(ds, idx, mp);
                                    workQueue_AMail.EnqueueItem(mp);
                                    idx++;
                                    if (idx >= ds.Tables[0].Rows.Count)
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            });
        }