这是一个别人的程序用VB SMTP等控件编写的发邮件程序,那位兄弟帮我讲讲怎么用它来收取邮件嘛!谢谢了啊!!!!!!
Private Sub SendEmail(smtpServerName As String, smtpUser As String, smtpPassword As String, _
    receiverAddr As String, receiverName As String, _
    senderAddr As String, senderName As String, _
    emailTitle As String, emailContent As String)
    
    Dim DSN As DsnConstants
    
    DSN = dsnNever
    On Error GoTo OnError
    
    ' Set SMTP control to block for up to
    ' 10 seconds before timing out
    Smtp1.Timeout = 10000
     
    ' Connect to SMTP server
    lsendingStatus.Caption = "Connecting to " + smtpServerName + "... "    Smtp1.Login smtpServerName, 25, smtpUser, smtpPassword
    
    ' Remove any Capabilities we don't want
    Smtp1.Capabilities.Clear
    Smtp1.DSN DSN
    
    ' Clear error message (This would be set in the Progress event)
    lsendProcess1.Caption = "Sending a E-Mail to" & receiverName
    lsendProcess2.Caption = "Sending E-Mail's Title" & emailTitle
    lsendResult.Caption = ""
    
    ' Send Message
    lsendingStatus.Caption = "Sending Message ... "
    ' If sending raw message, recipients and sender must be set now.
    With Smtp1.Message
        ' Clear any existing Content
        .Content = ""
 
        ' Add Header Parameters
        .To.Add receiverAddr
        .From = senderAddr
        .Cc.Add senderAddr
        .Bcc.Add senderAddr
        .Subject = emailTitle
        
        ' Add Message Body
        .AddText emailContent + vbCrLf
    End With
    
    ' 增加附件功能,待完善
    Smtp1.Send    ' Disconnect
    lsendingStatus.Caption = "Logging out ... "
    Smtp1.Logout
    lsendingStatus.Caption = "The E-Mail is sent successful. "
    EmailTimer.Enabled = True
    GoTo Cleanup
    
OnError:
    If badStatusMessage <> "" Then
        lsendResult.Caption = "ERROR: " + badStatusMessage
        badStatusMessage = ""
    Else
        lsendResult.Caption = "ERROR: " + Err.Description
    End If
    Smtp1.Abort
    EmailTimer.Enabled = True
    Exit Sub
    
Cleanup:
    strSQL = "UPDATE EmailQueue SET Result='邮件已经发送成功',ResultFlag=1 WHERE User='" & receiverName & "' AND EmailTitle='" & emailTitle & "'"
    Adocn.Open
    Adocm.ActiveConnection = Adocn
    Adocm.CommandText = strSQL
    Adocm.Execute
    Adocn.Close
End SubPrivate Sub xpcmdbutton9_Click()
 fmpeople.Visible = True
 fmEmailContent.Visible = False
 fmSendList.Visible = False
 fmCompanyInfo.Visible = False
 xpcmdbutton9.Enabled = False
 xpcmdbutton10.Enabled = True
 xpcmdbutton11.Enabled = True
 xpcmdbutton12.Enabled = True
 
End Sub
Public Function TranslateMethod(ByVal o As DartMailCtl.SmtpMethodConstants)
    Select Case o
        Case smtpLogin
            TranslateMethod = "Login"
        Case smtpLogout
            TranslateMethod = "Logout"
        Case smtpSend
            TranslateMethod = "Send"
        Case smtpReset
            TranslateMethod = "Reset"
        Case smtpQuickSend
            TranslateMethod = "QuickSend"
        Case smtpCommand
            TranslateMethod = "Command"
        Case Else
            TranslateMethod = "Unable to resolve: " & o
    End Select
End FunctionPublic Function TranslateStatus(ByVal s As DartMailCtl.SmtpStatusConstants)
    Select Case s
        Case smtpBad
            TranslateStatus = "Bad"
        Case smtpSending
            TranslateStatus = "Send"
        Case smtpOk
            TranslateStatus = "OK"
        Case smtpTo
            TranslateStatus = "Recipient"
        Case smtpFrom
            TranslateStatus = "Sender"
        Case Else
            TranslateStatus = "Unable to resolve: " & s
    End Select
End Function

解决方案 »

  1.   

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

  2.   

    哦,搞错了,收邮件使用的不是smtp协议,估计用你的SMTP实现不了,其实,收发邮件在vb中都可以用winsock控件实现,你需要的话,留下邮箱,我给你几个例子
      

  3.   

    用POP控件可以吗?但我不知道怎么用呀!帮帮忙啊 
    [email protected]这是我的邮箱
      

  4.   

    已发送,请注意查收,共有下面的这几个例子:1. 目录handrfc822包含处理rfc822信件结构的程序。
    2. 目录mail-attch包含发送带附件的email的程序。
    3. 目录mailchecker包含接收邮件的程序。
    4. 目录Mime包含编码(base64,quote-printable,Uuencode)解码的程序。
    5. 目录sendmail包含发送无附件的email的程序。
    6. 目录vbmail包含使用MAPI发送接收邮件的程序。
      

  5.   

    its screenshot url: 
    http://free.efile.com.cn/huangtao/ScreenEnglishShot.jpg
    http://free.efile.com.cn/huangtao/ScreenShot.jpgsource download url:
    http://free.efile.com.cn/huangtao/SmartmailSource.rarsetup Download Url:
    http://free.efile.com.cn/huangtao/SmartMailSetup.rar
      

  6.   

    pop3 用于收邮件,一般正文用BASE64加密,所以你需要找一段解密代码,不然你会看到
    乱码
    smtp 用于发送邮件,发送过程中,用户名及密码,一般都用BASE64加密,正文部分自定义,可直接使用明文。附件一般要加密。
      

  7.   

    //请问一下我怎么下下来的邮件除了数字和英文以外如汉字是乱码呢?请帮忙回答一下!谢谢编码问题,用strconv试试