public void Send()
        {
            //初始化两个委托用来改变窗体发送按钮的可操作属性
            MethodInvoker dgMyBtnTrue  = new MethodInvoker(SetButtontrue);
            MethodInvoker dgMyBtnFalse = new MethodInvoker(SetButtonfalse);

            //初始化委托来更新状态信息窗口的消息
            dgMyListBox = new SetMyListBox(SetListBox);

            //发送时设置发送按钮不可用
            BeginInvoke(dgMyBtnFalse);
            //更新状态“正在连接服务器”
            statelistBox.Invoke(dgMyListBox, new object[] { "正在连接服务器。。。" });
            //使用mySendEmail类的Login方法进行登录
            mySendEmail.Login();
            //更新状态“正在发送消息”
            statelistBox.Invoke(dgMyListBox, new object[] { "正在发送。。。" });
            //使用mySendEmail类的EGLPABC_SendEmails方法发送邮件
            mySendEmail.EGLPABC_SendEmails();
            //邮件发送完毕后 设置发送按钮可用
            BeginInvoke(dgMyBtnTrue);
        }
        public void ReMail()
        {
            //初始化改变接收按钮可操作性的委托
            MethodInvoker dgMyBtnTrue  = new MethodInvoker(SetButtontrue);
            MethodInvoker dgMyBtnFalse = new MethodInvoker(SetButtonfalse);

            //初始化委托来更新窗体消息栏
            dgMyListBox    = new SetMyListBox(SetListBox);
            dgMyMailBox    = new SetMyListBox(SetMailBox);
            dgMyMessageBox = new SetMyListBox(SetMessageBox);

            //更新状态栏 “正在连接服务器。。。”
            statlistBox.Invoke(dgMyListBox, new object[] { "正在连接服务器。。。" });
            //设置接收邮件按钮不可用
            BeginInvoke(dgMyBtnFalse);
            //调用myReMail的Connect方法 如果失败就返回
            if (!(myReMail.Connect()))
            {
                return;
            }
            //设置netStream的值 以便以后用来获得邮件正文
            netStream = myReMail.GetNetStream();

            //若连接成功 更新状态栏 “已连接”
            statlistBox.Invoke(dgMyListBox, new object[] { "已连接" });
            //更新状态栏 “正在验证用户名和密码。。。”
            statlistBox.Invoke(dgMyListBox, new object[] { "正在验证用户名和密码。。。" });

            //若登录失败则返回
            if (!(myReMail.Login()))
            {
                return;
            }
            //若输入密码错误则返回 并设置接收邮件按钮不可用提示用户改变密码
            if (!myReMail.EnterPass())
            {
                BeginInvoke(dgMyBtnFalse);
                return;
            }

            //若密码正确 更新状态栏 “已登录”
            statlistBox.Invoke(dgMyListBox, new object[] { "已登录" });
            //更新状态栏 “正在获得邮件数。。。”
            statlistBox.Invoke(dgMyListBox, new object[] { "正在获得邮件数。。。" });

            //调用GetMailCount()方法来获得用户邮件数
            int count = myReMail.GetMailCount();

            if (count > 0)
            {
                //如果邮件数大于零,则提示用户邮件数
                maillabel.Invoke(dgMyMailBox, new object[] { "你有" + count + "封邮件" });
            }
            else
            {
                //否则显示无邮件
                maillabel.Invoke(dgMyMailBox, new object[] { "你没有邮件" });
            }

            //初始化字符串数组来获得邮件头
            string[] mailtop;
            //循环获得所有邮件的头部信息
            for (int i = 1; i <= count; i++)
            {
                //获得第i封邮件的头部信息
                mailtop = myReMail.GetMailTop(i);
                //更新窗体中电子邮件信息窗口 并将邮件标为已读
                messagelistBox.Invoke(dgMyMessageBox, new object[] { "未读" + " " + i + " " + " " + mailtop[0] + " " + mailtop[1] });
            }
            //接收邮件完毕 设置接收邮件按钮可用
            BeginInvoke(dgMyBtnTrue);
        }
        public void ReMail()
        {
            //初始化改变接收按钮可操作性的委托
            MethodInvoker dgMyBtnTrue = new MethodInvoker(SetButtontrue);
            MethodInvoker dgMyBtnFalse = new MethodInvoker(SetButtonfalse);
            //初始化委托来更新窗体消息栏
            dgMyListBox = new SetMyListBox(SetListBox);
            dgMyMailBox = new SetMyListBox(SetMailBox);
            dgMyMessageBox = new SetMyListBox(SetMessageBox);

            //更新状态栏 “正在连接服务器。。。”
            statlistBox.Invoke(dgMyListBox, new object[] { "正在连接服务器。。。" });
            //设置接收邮件按钮不可用
            BeginInvoke(dgMyBtnFalse);
            //调用myReMail的Connect方法 如果失败就返回
            if (!(myReMail.Connect()))
                return;
            //设置netStream的值 以便以后用来获得邮件正文
            netStream = myReMail.GetNetStream();

            //若连接成功 更新状态栏 “已连接”
            statlistBox.Invoke(dgMyListBox, new object[] { "已连接" });
            //更新状态栏 “正在验证用户名和密码。。。”
            statlistBox.Invoke(dgMyListBox, new object[] { "正在验证用户名和密码。。。" });

            //若登录失败则返回
            if (!(myReMail.Login()))
                return;
            //若输入密码错误则返回 并设置接收邮件按钮不可用提示用户改变密码
            if (!myReMail.EnterPass())
            {
                BeginInvoke(dgMyBtnFalse);
                return;
            }

            //若密码正确 更新状态栏 “已登录”
            statlistBox.Invoke(dgMyListBox, new object[] { "已登录" });
            //更新状态栏 “正在获得邮件数。。。”
            statlistBox.Invoke(dgMyListBox, new object[] { "正在获得邮件数。。。" });

            //调用GetMailCount()方法来获得用户邮件数
            int count = myReMail.GetMailCount();
            if (count > 0)
                //如果邮件数大于零,则提示用户邮件数
                maillabel.Invoke(dgMyMailBox, new object[] { "你有" + count + "封邮件" });
            else
                //否则显示无邮件
                maillabel.Invoke(dgMyMailBox, new object[] { "你没有邮件" });

            //初始化字符串数组来获得邮件头
            string[] mailtop;
            //循环获得所有邮件的头部信息
            for (int i = 1; i <= count; i++)
            {
                //获得第i封邮件的头部信息
                mailtop = myReMail.GetMailTop(i);
                //更新窗体中电子邮件信息窗口 并将邮件标为已读
                messagelistBox.Invoke(dgMyMessageBox, new object[] { "未读" + " " + i + " " + " " + mailtop[0] + " " + mailtop[1] });
            }
            //接收邮件完毕 设置接收邮件按钮可用
            BeginInvoke(dgMyBtnTrue);
        }
        public void Send()
        {
            //初始化两个委托用来改变窗体发送按钮的可操作属性
            MethodInvoker dgMyBtnTrue = new MethodInvoker(SetButtontrue);
            MethodInvoker dgMyBtnFalse = new MethodInvoker(SetButtonfalse);
            //初始化委托来更新状态信息窗口的消息
            dgMyListBox = new SetMyListBox(SetListBox);

            //发送时设置发送按钮不可用
            BeginInvoke(dgMyBtnFalse);
            //更新状态“正在连接服务器”
            statelistBox.Invoke(dgMyListBox, new object[] { "正在连接服务器。。。" });
            //使用mySendEmail类的Login方法进行登录
            mySendEmail.Login();
            //更新状态“正在发送消息”
            statelistBox.Invoke(dgMyListBox, new object[] { "正在发送。。。" });
            //使用mySendEmail类的EGLPABC_SendEmails方法发送邮件
            mySendEmail.EGLPABC_SendEmails();
            //邮件发送完毕后 设置发送按钮可用
            BeginInvoke(dgMyBtnTrue);
        }