网学网为需要其他类别的朋友们搜集整理了基于SMTP一种简单的电子邮件群发软件相关资料,希望对各位网友有所帮助!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
4.4.2使用Winsock控件 本程序主要使用了Winsock控件发送邮件,在这里会用到一系列的命令。这些命令必须严格按照SMTP协议规定的顺序来执行。为了跟踪这一顺序,将使用到一个特殊的变量m-State,它用来存储当前的SMTP进程的状态。可以将SMTP进程状态看作是等待服务器对某一命令反应的状态,也就是说向服务器发送了多少个命令就有多少个状态。由于用户无法用VB的数据来描述进程所处的状态,因此程序用到了一个特殊数据类型“SMTP-State”。 在TCP应用中,为了建立一个网络连接实例(Instance)的服务器端,只需设置本地服务端口号,然后服务器调用方法Listen进入阻塞状态,等待来自客户的连接请求。与此对应的客户端不但要将Winsock的属性RemoteHost置为服务器的名称(IP地址或网络代号),还应设置服务器所监听的相应服务的端口号(RemotePort),如FTP服务在21号端口,HTTP在81号端口等。然后调用方法Winsock.Connect,向服务器发出请求。服务器接收到客户请求时,事件ConnectionRequest将被触发。如服务器愿意提供服务,则可调用Accept方法接受连接。一旦连接建立,两端均可使用SendData或GetData进行数据的发送或接收。事件DataArrival将在另一端数据准备就绪时被触发。UDP协议的实现与TCP不同的是,调用Sockets的两端无需建立连接便可进行数据的传输。因此,一个UDP应用可以同时担任服务器或客户的角色。 以下对用VB6.0 Winsock控件发送邮件进行简要介绍: (1) 设置Winsock控件的通信协议(TCP)、远程主机IP、远程连接端口(通常为25),然后连接远程主机。 代码片段如下: Winsock1.Protocol = sckTCPProtocol Winsock1.RemoteHost = "smtp.126.com" Winsock1.RemotePort = 25 Winsock1.Connect (2) 如果Winsock接受到的服务器的回应码为220,表明服务器端接受了客户端的连接请求。这样,可以进行下一步的通信:客户端发送EHLO消息,该消息表示客户希望基于ESMTP协议的电子邮件传递。 代码片段如下: winsock1.senddata("EHLO xiaopeng"+vbcrlf) (3) 如果Winsock接受到服务器的回应码为250,表明服务器接受了客户端的通过ESMTP发送邮件的请求。 这样,可以进行下一步的通信:客户端发送AUTH LOGIN消息。 代码片段如下: winsock1.senddata("AUTH LOGIN"+vbcrlf) (4) 如果Winsock接收到服务器的回应码为334,表明服务器启动了一个认证过程。下一步,客户端发送输入的用户名。 代码片段如下: winsock1.senddata(Encode64("username")+vbcrlf) (5) 如果Winsock接收到服务器的回应码为334,表明服务器已经接受了用户名。下一步,客户端发送输入的密码。 |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |