• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    發送電子郵件源碼(支持ESTMP協議,超文本電子郵件格式)

    發布: 2007-5-25 09:21 | 作者: dapha | 來源: 互聯網 | 查看: 106次 | 進入軟件測試論壇討論

    領測軟件測試網

    經常在論壇看到網友提問如何發送電子郵件(SMTP服務器認證),其實只要知道客戶端與郵件服務器之間會話,用戶
    名和密碼是通過base64編碼加密后傳送,問題就很容易被解決.協議使用方面和smtp協議使用是一模一樣的,值得
    注意的就是esmtp協議在用戶名和密碼驗證時,服務器返回一個354的消息代號.本代碼沒有針對錯誤提示信息處理,
    但保證能正常發送郵件,大家可以自己完善它,本代碼還使用IME編碼,這樣就可以發送超文本電子郵件了。用過
    Foxmail4.1朋友應該知道,它實現的圖文并茂聲音郵件是它的一個亮點。本代碼同樣可以實現超文本郵件,要發
    送mid做為背景音東的郵件,只要對ime代碼部分稍加修改就可以實現,歌曲也須用base64編碼后發送。目前流行
    郵件病毒的原理和此一樣,通過IE在IME中的漏洞實現,解決方法可以在注冊表中刪除IME編碼格式,或者安裝Winamp
    同樣也可以解決它(需做的只要在winamp支持的文件格式全選上),怎么越講越跑題了,大家不要向我扔臭雞蛋呀,
    hehe,我也不多廢話了,下附本軟件所有代碼.全整代碼也可以在我的個人主頁上下載,歡迎各位VB愛好與我聯系,交
    流編程技術.
    主頁:http://www.dapha.net
    Msn:dapha@msn.com
    VERSION 5.00
    Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
    Begin VB.Form Form1
       BorderStyle     =   1  'Fixed Single
       Caption         =   "郵件發送程序(支持smtp服務器驗證)"
       ClientHeight    =   5550
       ClientLeft      =   45
       ClientTop       =   330
       ClientWidth     =   5805
       LinkTopic       =   "Form1"
       MaxButton       =   0   'False
       ScaleHeight     =   5550
       ScaleWidth      =   5805
       StartUpPosition =   3  'Windows Default
       Begin MSWinsockLib.Winsock Winsock1
          Left            =   2640
          Top             =   2520
          _ExtentX        =   741
          _ExtentY        =   741
       End
       Begin VB.TextBox txtmessage1
          Height          =   1695
          Left            =   0
          MultiLine       =   -1  'True
          TabIndex        =   16
          ToolTipText     =   "這里為超文本信件內容"
          Top             =   3480
          Width           =   5775
       End
       Begin VB.TextBox user
          Height          =   270
          Left            =   3960
          TabIndex        =   15
          Top             =   840
          Width           =   1575
       End
       Begin VB.TextBox subject
          Height          =   270
          Left            =   960
          TabIndex        =   12
          Text            =   "你好"
          Top             =   1320
          Width           =   2295
       End
       Begin VB.TextBox txtserver
          Height          =   270
          Left            =   960
          TabIndex        =   9
          Text            =   "smtp.21cn.com"
          Top             =   960
          Width           =   2295
       End
       Begin VB.TextBox txtpwa
          Height          =   270
          IMEMode         =   3  'DISABLE
          Left            =   3960
          MaxLength       =   8
          PasswordChar    =   "*"
          TabIndex        =   7
          Top             =   1200
          Width           =   1575
       End
       Begin VB.TextBox getaddress
          Height          =   300
          Left            =   960
          TabIndex        =   5
          Top             =   600
          Width           =   2295
       End
       Begin VB.TextBox txtfrom
          Height          =   300
          Left            =   960
          TabIndex        =   3
          Top             =   240
          Width           =   2295
       End
       Begin VB.CommandButton cmdExit
          Caption         =   "退出"
          Height          =   375
          Left            =   4680
          TabIndex        =   2
          Top             =   240
          Width           =   975
       End
       Begin VB.CommandButton CmdSend
          Caption         =   "發送"
          Height          =   375
          Left            =   3360
          TabIndex        =   1
          Top             =   240
          Width           =   975
       End
       Begin VB.TextBox txtMessage
          Height          =   1815
          Left            =   0
          MultiLine       =   -1  'True
          TabIndex        =   0
          ToolTipText     =   "信件內容"
          Top             =   1680
          Width           =   5775
       End
       Begin VB.Label Label6
          AutoSize        =   -1  'True
          Caption         =   "用戶名"
          Height          =   180
          Left            =   3360
          TabIndex        =   14
          Top             =   840
          Width           =   540
       End
       Begin VB.Label StatusTxt
          AutoSize        =   -1  'True
          BackStyle       =   0  'Transparent
          BorderStyle     =   1  'Fixed Single
          Height          =   285
          Left            =   960
          TabIndex        =   13
          Top             =   5200
          Width           =   3375
       End
       Begin VB.Label Label5
          AutoSize        =   -1  'True
          Caption         =   "主題:"
          Height          =   180
          Left            =   240
          TabIndex        =   11
          Top             =   1320
          Width           =   450
       End
       Begin VB.Label Label4
          AutoSize        =   -1  'True
          Caption         =   "SMTP服務器"
          Height          =   180
          Left            =   0
          TabIndex        =   10
          Top             =   960
          Width           =   900
       End
       Begin VB.Label Label3
          AutoSize        =   -1  'True
          Caption         =   "密碼"
          Height          =   180
          Left            =   3360
          TabIndex        =   8
          Top             =   1200
          Width           =   360
       End
       Begin VB.Label Label2
          AutoSize        =   -1  'True
          Caption         =   "收信人地址"
          Height          =   180
          Left            =   0
          TabIndex        =   6
          Top             =   600
          Width           =   900
       End
       Begin VB.Label Label1
          AutoSize        =   -1  'True
          Caption         =   "發信人地址"
          Height          =   180
          Left            =   0
          TabIndex        =   4
          Top             =   240
          Width           =   900
       End
    End
    Attribute VB_Name = "Form1"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    '程序組合:dapha(汪鋒)
    '下載Private Enum SMTP_State
        MAIL_CONNECT
        MAIL_HELO
        MAIL_from
        MAIL_RCPTTO
        MAIL_DATA
        MAIL_DOT
        MAIL_QUIT
        MAIL_USER
        MAIL_PASS
        mail_login
    End Enum
    Private m_State As SMTP_State
    Private m_strEncodedFiles As String
    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
    Private Sub cmdExit_Click()
    Unload Me
    End Sub
    Private Sub CmdSend_Click()
        Winsock1.Close
        Winsock1.LocalPort = 0
        strserver = txtserver
        ColonPos = InStr(strserver, ":")
        If ColonPos = 0 Then
            Winsock1.Connect strserver, 25
        Else
            lngPort = CLng(Right$(strserver, Len(strserver) - ColonPos))
            strserver = Left$(strserver, ColonPos - 1)
            Winsock1.Connect strserver, lngPort
        End If
        m_State = MAIL_CONNECT    '
        StatusTxt = "試圖與服務器連接"
    End Sub

    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
        Dim strServerResponse   As String
        Dim strResponseCode     As String
        Dim strDataToSend       As String    '
        Const RandString As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_"
        Dim Globalstr As String
        For jd = 1 To 24
            uniquey = Int(Rnd * Len(RandString)) + 1
            Globalstr = Globalstr + Mid(RandString, uniquey, 1)
        Next jd
        strime1 = "Subject:" + Chr(32) + subject +
    vbCrLf ' Subject of E-Mail
        strime = txtMessage + vbCrLf ' E-mail message body
        strime2 = "X-Mailer:程序太平洋:郵件發送軟件V1.0" + vbCrLf ' What program sent the e-mail, customize this
        'MULTI-PART Edit
        strime = "------=_NextPart_" + Globalstr + vbCrLf + "Content-type: text/plain; charset=gb2312" + vbCrLf + vbCrLf + strime
        strime = strime + "------=_NextPart_" + Globalstr + vbCrLf + "Content-type: text/HTML" + vbCrLf + vbCrLf + txtmessage1 + vbCrLf + vbCrLf
        strime = strime + "------=_NextPart_" + Globalstr + "--" + vbCrLf
        strime1 = strime1 + "MIME-Version: 1.0" + vbCrLf + "Content-Type: multipart/alternative; " + vbCrLf + Chr(9) + "boundary=""----=_NextPart_" + Globalstr + """" + vbCrLf + vbCrLf + "This mail is In MIME format. Your mail interface does Not appear To support this format." + vbCrLf + vbCrLf
        strimeall = strime2 + strime1
        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
                    strDataToSend = Trim$(txtfrom)
                    'strDataToSend = Left$(strDataToSend, _
                                    InStr(1, strDataToSend, "@") - 1)
                     Winsock1.SendData "HELO " & strDataToSend & vbCrLf
                     StatusTxt = "登陸服務器"
                Case MAIL_HELO
                     m_State = MAIL_USER
                     Winsock1.SendData "AUTH LOGIN" & vbCrLf
                     StatusTxt = "正在校驗用戶名"
                Case MAIL_USER
                     m_State = MAIL_PASS
                     Winsock1.SendData (Base64_Encode(Trim(user.Text))) & vbCrLf
                     StatusTxt = "校驗用戶密碼"
                Case MAIL_PASS
                     m_State = mail_login
                     Winsock1.SendData (Base64_Encode(txtpwa)) & vbCrLf
                     StatusTxt = "發送人郵件地址"
                Case mail_login
                     m_State = MAIL_from
                     Winsock1.SendData "MAIL FROM:" & Trim$(txtfrom) & vbCrLf
                     StatusTxt = "接收人郵件地址"
                Case MAIL_from
                     m_State = MAIL_RCPTTO
                     Winsock1.SendData "RCPT TO:" & Trim$(getaddress) & vbCrLf
                     StatusTxt = "郵件發送之中..."
                Case MAIL_RCPTTO
                     m_State = MAIL_DATA
                     Winsock1.SendData "DATA" & vbCrLf
                     StatusTxt = "獲取郵件內容"
                Case MAIL_DATA
                    m_State = MAIL_DOT
                    Winsock1.SendData "From:" & user.Text & " <" & txtfrom & ">" & vbCrLf
                    Winsock1.SendData "To:" & toname & " <" & getaddress & ">" & vbCrLf
                    Winsock1.SendData strimeall & vbCrLf
                    Winsock1.SendData strime & vbCrLf
                    Winsock1.SendData "." & vbCrLf
                    StatusTxt = "郵件送完畢"
                Case MAIL_DOT
                    m_State = MAIL_QUIT
                    Winsock1.SendData "QUIT" & vbCrLf
                    StatusTxt = "郵件成功發送!!!"
                  Case MAIL_QUIT
                     Winsock1.Close
                     StatusTxt = "待命之中..."
             End Select
        Else
             Winsock1.Close
        End If
    Debug.Print strServerResponse
    End Sub
    全文完...

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>