VB当中用什么组件发送邮件?而且邮件可以添加数字签名?
急啊,请大家帮忙啊!

解决方案 »

  1.   

    添加Components  Microsoft Winsock Control 6.0
    在一个Form 里添加它命名为wskEmail  Code里 添加如下代码Option Explicit
    Public sSubject As String
    Public sBody As String
    Public fsTo As FwStringsPrivate Sub SendMail(ByVal sSubject As String, ByVal sBody As String, ByVal fsTo As  string)
    On Error GoTo ErrorHandler
        Dim iCnt As Integer
    '    Dim strTo As String
        
        Wait 0.5
     '   Debug.Print Err.Description
        wskEmail.SendData "EHLO " & wskEmail.LocalIP & vbCrLf
       ' Debug.Print Err.Description
        wskEmail.SendData "MAIL FROM:" & " xxxx" & vbCrLf
        
        Wait 0.5
        
       strTo =fsTo
        
        wskEmail.SendData "DATA" & vbCrLf
        
        Wait 0.5
        
        wskEmail.SendData "MIME-Version: 1.0" & vbCrLf
        wskEmail.SendData "From: MES System <[email protected]>" & vbCrLf
    '    wskEmail.SendData "To: <" & strTo & ">" & vbCrLf
        For iCnt = 1 To fsTo.Count
            wskEmail.SendData "To: <" & fsTo.Item(iCnt) & ">" & vbCrLf
        Next iCnt
        wskEmail.SendData "Subject: " & sSubject & vbCrLf
        wskEmail.SendData "Content-Type: multipart/mixed;" & vbCrLf
        wskEmail.SendData "              boundary=Unique-Boundary" & vbCrLf & vbCrLf
        wskEmail.SendData " [ Random garbage here ]" & vbCrLf & vbCrLf
        wskEmail.SendData vbCrLf & "--Unique-Boundary" & vbCrLf
        wskEmail.SendData "Content-type: text/plain; charset=US-ASCII" & vbCrLf & vbCrLf
        wskEmail.SendData sBody & vbCrLf & vbCrLf
        
        wskEmail.SendData vbCrLf & "." & vbCrLf
        
        Wait 0.5
        
        wskEmail.SendData "QUIT" & vbCrLf
        
        Wait 0.5
        
        wskEmail.Close
        
        Exit Sub
        
    ErrorHandler:
       End SubPrivate Sub Wait(WaitTime)
        Dim StartTime As Double
        
        StartTime = Timer
        
        Do While Timer < StartTime + WaitTime
            If Timer > 86395 Or Timer = 0 Then Exit Do
            DoEvents
        Loop
        
    End SubPublic Sub Action(Optional strSrvPort As String)
    On Error GoTo ErrorHandler
        wskEmail.RemoteHost =  填写Mail Server IP 
        
        If strSrvPort = "" Then
            wskEmail.RemotePort = 25
        Else
            wskEmail.RemotePort = Val(strSrvPort)
        End If
        
        wskEmail.Connect
        
        Wait 0.5
        
        SendMail sSubject, sBody, fsTo
    '    MsgBox "Send successful"
        
        Exit Sub
        
    ErrorHandler:
         
    End Sub
    调用时的例子
              Dim frmDoSendMail As New frmSendMail            frmDoSendMail.sSubject = "MialSubject"
                frmDoSendMail.sBody =  "test"
                Set frmDoSendMail.fsTo = "[email protected]
                Load frmDoSendMail
               
                   frmDoSendMail.Action            Unload frmDoSendMail
      

  2.   

    winsock太麻烦了 
    用mapi控件是专门用来编邮件的
    microsoft mapicontrols 6.0 
    的mapisession和mapimessages很简单自己看看就会拉