SMTP被用来在因特网上传递电子邮件文件RFC规定了该协议的所有细节但是你只须记住下面的内容--该协议的基本命令和方法就行了 协议的原理很简单无非是一个客户端计算机向服务器发送命令然后服务器向客户端计算机返回一些信息客房端发送的命令以及服务器的回应都是字符串你并不需要特别的软件就能读出它们如果你仔细看过Winsock Terminal示例程序的源代码你就会发现这一点现在让我们用这个示例程序来向自己发一封电子邮件吧 运行示例程序单击Connect按钮在Connect to对话框中输入你的电子邮件服务器的地址选择SMTP选项最后按Connect按钮如果连接成功Winsock控件会产生Connected事件在状态栏中也可看到连接成功的信息在主文本窗口中你将看到从服务器返回的文本该文本包含一个三位数的代码及描述例如 nscinforu Sendmail / ready at Wed Apr :: + ESMTP spoken here 不必太过留意这些描述因为这些描述可能会因服务器而异你只须要知道代码所代表的意思就行了代码表示成功建立连接服务器等待你的第一个命令 向服务器传递的第一个命令是HELO 该命令包含一个参数即你的邮箱名 HELO oleg 注意: 在RFC中HELO是一个可选择性命令如果服务器不要求该命令的话你可以把它忽略掉 如果命令成功服务器会返回一个代码为的回应下一步用MAIL FROM命令告诉服务器你想发一封邮件该命令以发信人的邮件地址为参数 MAIL FROM: 发完命令后如果服务器返回一个代码为回应你就可以向服务器发送RCPT TO命令了该命令以收信人地址为参数一看便知是告诉服务器你想将邮件发到收信人地址处 RCPT TO: 如果你想将邮件发给多个收件人的话你需要多次使用RCPT TO命令对每个命令服务器都会返回代码为的回应 现在你可以向服务器发送邮件正文了用DATA命令告诉服务器以下的内容为邮件正文在你从服务器收到代码为的回应后你就可以发送邮件正文了邮件按行发送每行邮件以一个无回车的换行符结束(在VB中就是vbLf)示例程序知道何时使用换行符何时使用回车加换行符所以你只须按回车键就行了下面是一个例子 Subject: My first email message First line of a message Second line
注意上面最后一行的最后一个字符是一个小数点这是正文结束的标志用VB代码表示就是vbLf & & vbCrLf 服务器收到这个标志后就会立即向你返回一个代码为的回应以及该邮件的唯一ID号 WAA Message accepted for delivery 任务完成了你可以继续发送下封邮件也可以断开同服务器的连接如果要断开同服务器的连接就用QUIT命令在这种情况下服务器会返回一个代码为的回应并断开连接 QUIT nscinforu closing connection |