怎样在VB方式下载邮件中的附件!100分求救!问题解决后立即结分!
条件:1、在VB方式
      2、下载邮件中的附件
解决后立即给分,分不够还可以加分。

解决方案 »

  1.   

    去http://www.yesky.com/20011222/211173_3.shtml看看
      

  2.   

    如果是winsock
    下载附件和下载信头一样,只要接收,再取出各部分(包括附件——一般是被base64编码的)
    就行了.
      

  3.   

    TO lly923(lly) :我不是给过你一个Winsock接收邮件内容的例子吗?
      

  4.   

    一般来说,POP3邮件是用MIME进行编码的,在电脑报中有邮件接收和发送邮件的方法,我就不多说了,我单对邮件的MIME编码的解码进行讨论。
    邮件MIME编码是由64个安全字符而构成的64进制的字符编码
    他们的排序顺序分别是 a→z + A→Z + 0→9 + "+/" 组成 26+26+10+2=64 个安全字符
    就像16进制的 0→9 + A→F 一样
    下面是完整的代码。Option Explicit
    Public 进制数(63) As StringPublic Sub 初始化MIME字符集()
       Dim X As Long
       For X = 0 To 25
          进制数(X) = Chr(65 + X)
       Next X
       For X = 0 To 25
          进制数(X + 26) = Chr(97 + X)
       Next X
       For X = 0 To 9
          进制数(X + 52) = Chr(48 + X)
       Next X
       进制数(62) = "+"
       进制数(63) = "/"
    End Sub
    Public Function 对文字进行MIME编码(要编码字符串 As String) As String
       Dim X As Long, 字符字节数组() As Byte, 编码数 As Long, 余数 As Long
       分析文本为字节 要编码字符串, 字符字节数组
       
       余数 = UBound(字符字节数组) Mod 3
       Select Case 余数
       Case 0: For X = 1 To UBound(字符字节数组) Step 3
                  编码数 = 合并字节数组为整数(字符字节数组, X, 3)
                  对文字进行MIME编码 = 对文字进行MIME编码 & 十进制转六十四进制(编码数, 进制数)
               Next X
       
       Case 1: For X = 1 To UBound(字符字节数组) - (UBound(字符字节数组) Mod 3) Step 3
                  编码数 = 合并字节数组为整数(字符字节数组, X, 3)
                  对文字进行MIME编码 = 对文字进行MIME编码 & 十进制转六十四进制(编码数, 进制数)
               Next X
               编码数 = (合并字节数组为整数(字符字节数组, UBound(字符字节数组) - UBound(字符字节数组) Mod 3 + 1, UBound(字符字节数组) Mod 3)) * 16
               对文字进行MIME编码 = 对文字进行MIME编码 & 十进制转六十四进制(编码数, 进制数)
       
       Case 2: For X = 1 To UBound(字符字节数组) - (UBound(字符字节数组) Mod 3) Step 3
                  编码数 = 合并字节数组为整数(字符字节数组, X, 3)
                  对文字进行MIME编码 = 对文字进行MIME编码 & 十进制转六十四进制(编码数, 进制数)
               Next X
               编码数 = (合并字节数组为整数(字符字节数组, UBound(字符字节数组) - UBound(字符字节数组) Mod 3 + 1, UBound(字符字节数组) Mod 3)) * 4
               对文字进行MIME编码 = 对文字进行MIME编码 & 十进制转六十四进制(编码数, 进制数)
       End Select
    End FunctionPublic Function 解释MIME编码为文本(MIME编码 As String) As String
       Dim 余数 As Long, 循环总数 As Long, 循环数 As Long, 临时字符 As String, 十进制数 As Long, 综合数组() As Long, 中文区位码 As Long
       余数 = Len(MIME编码) Mod 4
       循环总数 = (Len(MIME编码) - 余数) / 4
       Select Case 余数
       Case 0: ReDim 综合数组(1 To 循环总数 * 3)
       Case 1: ReDim 综合数组(1 To 循环总数 * 3 + 1)
               综合数组(循环总数 * 3 + 1) = Int(六十四进制转十进制(Right(MIME编码, 1), 进制数) / 16)
               
       Case 2: 临时字符 = Right(MIME编码, 余数)
               十进制数 = Int(六十四进制转十进制(临时字符, 进制数) / 16)
               ReDim 综合数组(1 To 循环总数 * 3 + 1)
               综合数组(循环总数 * 3 + 1) = 十进制数
                  
       Case 3: 临时字符 = Right(MIME编码, 余数)
               十进制数 = Int(六十四进制转十进制(临时字符, 进制数) / 4)
               ReDim 综合数组(1 To 循环总数 * 3 + 2)
               综合数组(循环总数 * 3 + 2) = 十进制数 Mod 256
               综合数组(循环总数 * 3 + 1) = Int(十进制数 / 256) Mod 256
       End Select
       For 循环数 = 1 To 循环总数
          临时字符 = Left(MIME编码, 循环数 * 4)
          临时字符 = Right(临时字符, 4)
          十进制数 = 六十四进制转十进制(临时字符, 进制数)
          综合数组((循环数 - 1) * 3 + 3) = 十进制数 Mod 256
          综合数组((循环数 - 1) * 3 + 2) = Int(十进制数 / 256) Mod 256
          综合数组((循环数 - 1) * 3 + 1) = Int(十进制数 / 256 / 256) Mod 256
       Next 循环数
       For 循环数 = LBound(综合数组) To UBound(综合数组)
          If 综合数组(循环数) >= 33 And 综合数组(循环数) <= 127 Then
             解释MIME编码为文本 = 解释MIME编码为文本 & Chr(综合数组(循环数))
          Else
             If UBound(综合数组) >= 循环数 + 1 Then
                If 综合数组(循环数 + 1) >= 127 Then
                   中文区位码 = 综合数组(循环数) * 256
                   中文区位码 = 中文区位码 + 综合数组(循环数 + 1)
                   中文区位码 = 将长数进行16位整数转换(中文区位码)
                   解释MIME编码为文本 = 解释MIME编码为文本 & Chr(中文区位码)
                   循环数 = 循环数 + 1
                Else
                   解释MIME编码为文本 = 解释MIME编码为文本 & Chr(综合数组(循环数))
                End If
             Else
                解释MIME编码为文本 = 解释MIME编码为文本 & Chr(综合数组(循环数))
             End If
          End If
       Next 循环数
    End Function
    Public Function 六十四进制转十进制(六十四进制数 As String, 六十四进制编码() As String) As Variant
       Dim X As Long, Y As Long, 临时字符 As String, 当前编码数 As Long
       For X = 1 To Len(六十四进制数)
          临时字符 = Left(六十四进制数, X)
          临时字符 = Right(临时字符, 1)
          For Y = 0 To 63
             If 临时字符 = 六十四进制编码(Y) Then
                当前编码数 = Y
                Exit For
             End If
          Next Y
          六十四进制转十进制 = 六十四进制转十进制 + 当前编码数 * 64 ^ (Len(六十四进制数) - X)
       Next X
    End Function
    使用时必须先使用 "初始化MIME字符集()" 函数
    然后再操作 MIME 便编码
    这些代码绝对可靠,我已经作了一个类似 Microsoft OutLook 的程序,解码方面绝对没问题
    只是可能在代码中有些我自定义的函数我没有注意到的没有放上去,你就自己研究一下吧。因为我的模块都是中文的,相信看起来也比较容易。
    好了,给分吧。