我想编写一个小程序实现发送邮件的功能,不带收信功能就可以。主要是成功发送就可以。
比如完成以后运行可以发送指定文本 ,或者以附件形式发送到指定邮箱!哪位朋友可以提供一下源代码或者编译好的程序 谢谢了^_^

解决方案 »

  1.   

    我以前用VB写的,主要就是和SMTP服务器对话,邮件内容需要编码strSubject = Text1.Text
        strTextContent = Text2.Text    strIME = "MIME-Version: 1.0" & vbCrLf
        strIME = strIME & "Content-Type: multipart/mixed;boundary=""B1""" & vbCrLf & vbCrLf
        strIME = strIME & "--B1" & vbCrLf
        strIME = strIME & "Content-type: text/plain; charset=gb2312" & vbCrLf & vbCrLf
        strIME = strIME & strTextContent & vbCrLf & vbCrLf
        Dim fso As New FileSystemObject
        If fso.FileExists(Text4.Text) Then
            Encade64FileTOFile Text4.Text, App.Path & "\ad.tmp"
            Dim strFile As String, fileName As String
            Dim t As TextStream
            Set t = fso.OpenTextFile(App.Path & "\ad.tmp")
            strFile = t.ReadAll
            t.Close
            Kill App.Path & "\ad.tmp"
            fileName = fso.GetFileName(Text4.Text)
            
            strIME = strIME & "--B1" & vbCrLf
            strIME = strIME & "Content-Transfer-Encoding: base64" & vbCrLf
            strIME = strIME & "Content-Disposition: attachment;filename=""" & fileName & """" & vbCrLf & vbCrLf
            strIME = strIME & strFile & vbCrLf & vbCrLf
        End If
        Set fso = Nothing
        strIME = strIME & "--B1--" & vbCrLf
        
        
        Winsock1.Close
        Winsock1.LocalPort = 0
        Winsock1.Connect strServer, 25
        m_State = MAIL_CONNECT
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
        Dim strServerResponse As String
        Dim strResponseCode As String    Winsock1.GetData strServerResponse
        strResponseCode = Left(strServerResponse, 3)
        If strResponseCode = "250" Or _
           strResponseCode = "220" Or _
           strResponseCode = "354" Or _
           strResponseCode = "334" Or _
           strResponseCode = "235" Then
            Select Case m_State
                Case MAIL_CONNECT
                    m_State = MAIL_HELO
                    Winsock1.SendData "HELO " & strServer & vbCrLf
                Case MAIL_HELO
                     m_State = MAIL_USER
                     Winsock1.SendData "AUTH LOGIN" & vbCrLf '登陆服务器"
                Case MAIL_USER
                     m_State = MAIL_PASS
                     Winsock1.SendData Base64_Encode(strUid) & vbCrLf '校验用户名"
                Case MAIL_PASS
                     m_State = mail_login
                     Winsock1.SendData Base64_Encode(strPwd) & vbCrLf '校验用户密码"
                Case mail_login
                     m_State = MAIL_from
                     Winsock1.SendData "MAIL FROM:" & strFrom & vbCrLf '发送人邮件地址"
                Case MAIL_from
                     m_State = MAIL_RCPTTO
                     Winsock1.SendData "RCPT TO:" & strTo & vbCrLf '接收人邮件地址"
                Case MAIL_RCPTTO
                     m_State = MAIL_DATA
                     Winsock1.SendData "DATA" & vbCrLf
                Case MAIL_DATA
                    m_State = MAIL_DOT
                    Winsock1.SendData "From:" & Text3.Text & "<" & Text3.Text & ">" & vbCrLf
                    Winsock1.SendData "To:" & strTo & "<" & strTo & ">" & vbCrLf
                    Winsock1.SendData "Date:" & Now & vbCrLf
                    Winsock1.SendData "Subject:" & strSubject & vbCrLf
                    Winsock1.SendData strIME & vbCrLf
                    Winsock1.SendData "." & vbCrLf '邮件送完毕
                Case MAIL_DOT
                    m_State = MAIL_QUIT
                    Winsock1.SendData "QUIT" & vbCrLf '关闭会话
                    MsgBox "留言成功,谢谢您的支持!"
                    Unload Me
                Case MAIL_QUIT
                    Winsock1.Close
             End Select
        Else
             Winsock1.Close
        End If
    Debug.Print strServerResponse
    End Sub
    Private Function Base64_Encode(strSource) As String 'base6加密算法
        Const BASE64_TABLE As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
        Dim strTempLine As String
        Dim j As Integer
        For j = 1 To (Len(strSource) - Len(strSource) Mod 3) Step 3
            strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) \ 4) + 1, 1)
            strTempLine = strTempLine + Mid(BASE64_TABLE, ((Asc(Mid(strSource, j, 1)) Mod 4) * 16 _
                          + Asc(Mid(strSource, j + 1, 1)) \ 16) + 1, 1)
            strTempLine = strTempLine + Mid(BASE64_TABLE, ((Asc(Mid(strSource, j + 1, 1)) Mod 16) * 4 _
                          + Asc(Mid(strSource, j + 2, 1)) \ 64) + 1, 1)
            strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j + 2, 1)) Mod 64) + 1, 1)
        Next j
        If Not (Len(strSource) Mod 3) = 0 Then
             If (Len(strSource) Mod 3) = 2 Then
                strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) \ 4) + 1, 1)
                strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) Mod 4) * 16 _
                          + Asc(Mid(strSource, j + 1, 1)) \ 16 + 1, 1)
                strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j + 1, 1)) Mod 16) * 4 + 1, 1)
                strTempLine = strTempLine & "="
            ElseIf (Len(strSource) Mod 3) = 1 Then
                strTempLine = strTempLine + Mid(BASE64_TABLE, Asc(Mid(strSource, j, 1)) \ 4 + 1, 1)
                strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) Mod 4) * 16 + 1, 1)
                strTempLine = strTempLine & "=="
            End If
         End If
        Base64_Encode = strTempLine
    End Function
      

  2.   

    谢谢 楼上的 可是看上去貌似很复杂 ^_^呵呵 
    有没有编译好的直接可以执行的程序 比如我调用一下就可以把本地磁盘的如:d:\**.txt文本的内容或者附件方式发送到指定邮箱里面……呵呵
      

  3.   

    http://vckbase.com/document/viewdoc/?id=651
    调用默认的程序发送,你看行不