📄 105.htm
字号:
<p>邮件检查程序(一) </p>
<p></p>
<p>按下表所示设置各控件的属性。</p>
<p></p>
<p>控件 名称 描述 </p>
<p>Textbox txtHost 用于输入邮件服务器的名称或地址 </p>
<p>Textbox txtUserName 输入用户名 </p>
<p>Textbox txtPassword 输入密码 </p>
<p>Textbox txtBody 显示邮件内容 </p>
<p>Listview lvMessages 显示邮件清单 </p>
<p>Command Button cmdCheckMail 用于启动接收并显示邮件的子程序 </p>
<p>Command Button cmdExit 退出程序 </p>
<p></p>
<p>将名为txtBody的文本框的Multiline属性设为True,Scrollbars属性设为3-Both。选择ListView控件,打开其属性对话框,在“列首”标签页中插入四个列,文本分别为: "From", "Subject", "Date", "Size",然后将该控件的View属性设为3-lvwReport。 </p>
<p></p>
<p>直观的界面显示你是如何使用本程序的。首先输入邮件服务器的名称或地址,然后是你的用户名和密码。最报按检查邮件按钮。接下来,我们就会看到在ListView中显示的邮件列表了。点选其中的一项,邮件的内容就会显示在下面的文本框中。</p>
<p></p>
<p>从程序的外观及VB由事件驱动的本质,我们可以猜出我们只需要处理两个事件:cmdCheckMail_Click和lvMessages_ItemClick.至于cmdExit中的事件我想就不必说了。先别急,让我们一步步来看看本程序的代码是怎样的。首先看看“检查邮件”按钮。当你按下这个按钮后,程序会首先检查文本框中的内容,然后调用Winsock的Connect方法连上远程服务器。下面是程序代码:</p>
<p></p>
<p>Private Sub cmdCheckMail_Click()</p>
<p></p>
<p>'检查除txtBody之外所有文本框的内容是否为空</p>
<p>For Each c In Controls</p>
<p>If TypeOf c Is TextBox And c.Name <> "txtBody" Then</p>
<p> If Len(c.Text) = 0 Then</p>
<p> MsgBox c.Name & " can't be empty", vbCritical</p>
<p>Exit Sub</p>
<p>End If</p>
<p>End If</p>
<p>Next</p>
<p>'改变当前进程状态的值</p>
<p>m_State = POP3_Connect</p>
<p>'关闭socket以防它已被另一个进程打开</p>
<p>Winsock1.Close</p>
<p>'重置 local port的值,Windows Socket会自动寻找一个新值</p>
<p>'这样做是为了防止出现 "地址正在被使用"的错误,</p>
<p>'这种情况通常出现在Winsock控件已被前一个进程所使用</p>
<p>Winsock1.LocalPort = 0</p>
<p>'POP3服务器通常用端口110来等待连接请求</p>
<p>'因此我们要让Winsock控件用这个端口连上服务器。</p>
<p>Winsock1.Connect txtHost, 110</p>
<p></p>
<p>End Sub </p>
<p></p>
<p>除了下面这个语句之外,其它都一目了然。 </p>
<p></p>
<p>m_State = POP3_Connect </p>
<p></p>
<p>现在就让我来解释一下这个语句。当触发了cmdCheckMail_Click事件后,所运行的程序代码的目的是要连上远程邮件服务器。下面要进行的操作就转由在Winsock控件的DataArrival事件中的代码来控制了。</p>
<p></p>
<p>每次当Winsock收到数据时,都会触发DataArrival事件。根据已收到的数据和你所发出的命令,程序才知道应执行在该事件中的哪一部分代码,以真正完成数据的接收。 </p>
<p></p>
<p>为了让程序记住你上次发出的命令,或者说当前进程的状态,我们使用了m_State变量。该变量存放你事先定义好的一个特殊的数据类型:POP3States的值。 </p>
<p></p>
<p>Private Enum POP3States</p>
<p> POP3_Connect</p>
<p> POP3_USER</p>
<p> POP3_PASS</p>
<p> POP3_STAT</p>
<p> POP3_RETR</p>
<p> POP3_DELE</p>
<p> POP3_QUIT</p>
<p>End Enum</p>
<p></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -