转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
用VB实现一个简单的ESMTP客户端         ★★★★

用VB实现一个简单的ESMTP客户端

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2048 更新时间:2009/4/23 18:59:49

最近发现JMail居然没有for VB的例子,本来想用C#写一个的,可是家里的电脑只有一个VB,好的程序员是不能受制于开发工具的(虽然我并不是个程序员)。

花了一个晚上,面对着RFC0821和Ethereal的截包结果,功夫不负有心人,终于有一个简单的例子可以和大家共享了,希望大家讨论一下。(格式不怎么好,许多异常也没处理,另外VB的语法已经忘得差不多了,请大家谅解!)

项目包括两个文件

1 main.frm

VERSION 5.00
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
Begin VB.Form Form1
   Caption         =   "Form1"
   ClientHeight    =   4725
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   5550
   LinkTopic       =   "Form1"
   ScaleHeight     =   4725
   ScaleWidth      =   5550
   StartUpPosition =   3  ''''Windows Default
   Begin MSWinsockLib.Winsock smtpClient
      Left            =   1680
      Top             =   120
      _ExtentX        =   741
      _ExtentY        =   741
      _Version        =   393216
      RemoteHost      =   "mail.domain.com"
      RemotePort      =   25
   End
   Begin VB.CommandButton Command2
      Caption         =   "Connect"
      Height          =   495
      Left            =   120
      TabIndex        =   3
      Top             =   120
      Width           =   1215
   End
   Begin VB.CommandButton Command1
      Caption         =   "Send"
      Height          =   375
      Left            =   4560
      TabIndex        =   2
      Top             =   4200
      Width           =   855
   End
   Begin VB.TextBox Text2
      Height          =   315
      Left            =   120
      TabIndex        =   1
      Top             =   4200
      Width           =   4215
   End
   Begin VB.TextBox Text1
      Height          =   3255
      Left            =   120
      MultiLine       =   -1  ''''True
      ScrollBars      =   2  ''''Vertical
      TabIndex        =   0
      Top             =   840
      Width           =   5295
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private state As Integer
Private FLAG_LINE_END As String
Private FLAG_MAIL_END As String

Private Sub Command1_Click()
    Text2.Text = base64encode(utf16to8(Text2.Text))
    ''''Text2.Text = base64decode(utf8to16(Text2.Text))
End Sub

Private Sub Command2_Click()
    state = 0
    smtpClient.Close
    smtpClient.Connect
End Sub

Private Sub Form_Load()
    mailcount = 2
    FLAG_LINE_END = Chr(13) + Chr(10)
    FLAG_MAIL_END = FLAG_LINE_END + "." + FLAG_LINE_END
End Sub

Private Sub Form_Terminate()
    smtpClient.Close
End Sub

Private Sub smtpClient_Close()
    ''''MsgBox "closed!"
    state = 0
End Sub

Private Sub smtpClient_DataArrival(ByVal bytesTotal As Long)
    Dim s As String
    smtpClient.GetData s
    Text1.Text = Text1.Text + s + FLAG_LINE_END
    Dim msgHead As String
    msgHead = Left(s, 3)
    Dim msgBody As String
    msgBody = Mid(s, 5)
   
    Dim msgType As Integer
    msgType = CInt(msgHead)
    Dim msgsend As String
   
    Select Case state
    Case 0  ''''start state
        Select Case msgType
        Case 220
            msgsend = "EHLO yourname" + FLAG_LINE_END
            smtpClient.SendData msgsend
            Text1.Text = Text1.Text + msgsend + FLAG_LINE_END
            state = 1
        Case 421    ''''Service not available
        End Select
    Case 1  ''''EHLO
        Select Case msgType
        Case 250
            msgsend = "AUTH LOGIN" + FLAG_LINE_END
            smtpClient.SendData msgsend
            Text1.Text = Text1.Text + msgsend + FLAG_LINE_END
            state = 2
        Case 500, 501, 504, 421 ''''error happened
        End Select
    Case 2  ''''AUTH LOGIN
        Select Case msgType
        Case 334
            If msgBody = "VXNlcm5hbWU6" + FLAG_LINE_END Then
                msgsend = base64encode(utf16to8("username")) + FLAG_LINE_END
                smtpClient.SendData msgsend
                Text1.Text = Text1.Text + msgsend + FLAG_LINE_END
            ElseIf msgBody = "UGFzc3dvcmQ6" + FLAG_LINE_END Then
                msgsend = base64encode(utf16to8("password")) + FLAG_LINE_END
                smtpClient.SendData msgsend
                Text1.Text = Text1.Text + msgsend + FLAG_LINE_END
            End If
        Case 235    ''''correct
            SetFrom "you@domain.com"
            state = 3
        Case 535    ''''incorrect
            Quit
    &nb

[1] [2] [3]  下一页


[C语言系列]Socket 编程,一个服务器,多个客户端,互相通信  [常用软件]微软最新VoIP服务器及客户端软件下周开测
[常用软件]uTorrent:史上最省资源BT客户端试用  [常用软件]越看越流畅三款主流网络电视客户端导购
[常用软件]Allpeers:让Firefox摇身一变为P2P客户端  [常用软件]编译给自己专用的FTP客户端
[常用软件][网络]FTPRush FTP客户端 软件评测  [VB.NET程序]WinVista新技术 WCF开发指南之客户端开发
[VB.NET程序]建立同SAS交互的开发式VB客户端  [Web开发]利用JS获取IE客户端IP及MAC的实现
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台