⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 32.txt

📁 VB文章集(含API、窗口、数据库、多媒体、系统、文件、等等)
💻 TXT
字号:
发送电子邮件附件



第二个标签页中有一个ListView控件,用来显示文件列表,以及一个按钮,用来保存附件。如下图所示:

在本示例程序中,我们对CMessage类的CreateFromText方法作了更新:

Dim strFileName    As String
Dim strAttachment  As String
Dim lngFileSize    As Long
Dim lngFirstBegin  As Long
Dim lngFullStrings As Long

Const ENCODED_LINE_LENGTH = 61
'
intPosA = 1
Do
   'Looking for the start marker - "begin "
   intPosA = InStr(intPosA, strMessage, vbCrLf & "begin ") + 2
   'Exit from the loop if it hasn't found
   If intPosA = 2 Then Exit Do
   'remember the position of the first marker
   If lngFirstBegin = 0 Then lngFirstBegin = intPosA - 2
   'looking for the end of string the marker belongs to
   intPosB = InStr(intPosA + 1, strMessage, vbCrLf)
   If intPosB > 0 Then
      'check whether it is real marker or just 
      'an ordinal word "begin"
      If Mid$(strMessage, intPosA, _
         intPosB - intPosA) Like "begin ### *" Then
         'exctract the name of the file
         strFileName = Mid$(strMessage, intPosA + _
                       10, intPosB - intPosA - 10)
         '
         'further - the code for figuring out the size of the file
         'extract encoded data of the file
         strAttachment = Mid$(strMessage, intPosB + 2, _ 
                         InStr(intPosB + 2, strMessage, _
                         vbCrLf & "'" & vbCrLf & "end") _
                         - (intPosB + 2))
         'remove additional symbols vbCrlf
         strAttachment = Replace(strAttachment, vbCrLf, "")
         '"temporary" size of the file
         lngFileSize = CLng(Len(strAttachment))
         'get the number of full strings
         lngFullStrings = lngFileSize \ ENCODED_LINE_LENGTH
         If lngFileSize Mod ENCODED_LINE_LENGTH > 0 Then
            'The size of the file is equal to
            'the sum of the two meanings
            'The first one multiplies to the number of _
            'decoded characters (45)
            'The second one is the number of the bytes _
            'in the last string. It equals
            'to the difference between the ASCII meaning _
            'of the fist character and 32
            lngFileSize = lngFullStrings * 45 + _
                          (Asc(Mid$(strAttachment, _
                          lngFullStrings * _
                          ENCODED_LINE_LENGTH + 1, 1)) - 32)
         Else
            'This code runs in very rare cases when _
            'the size of the file is multiple
            'to 45 and we don't need to process _
            'non-standard last string of the encoded data
            lngFileSize = (lngFileSize - _
                          lngFileSize / ENCODED_LINE_LENGTH) * 0.75
         End If
         'add new item into the mvarAttachments collection
         mvarAttachments.Add lngFileSize, strFileName
      End If
   End If
Loop
'separate the text of the message
If mvarAttachments.Count > 0 Then
   m_strMessageBody = Left$(lngFirstBegin - 1)
End If 

上面的代码定义了文件名及其大小。这些信息保存在CAttachment对象中,当添中新的项目到mvarAttchments集合时,该对象即被创建。该集合是CMessage类的一个新的属性-Attachments。

下面是ListView控件的ItemClick事件中的代码:

Dim oAttachment As CAttachment
Dim lvItem As ListItem

lvAttachments.ListItems.Clear

For Each oAttachment In m_colMessages(Item.Key).Attachments
    Set lvItem = lvAttachments.ListItems.Add _
                 (, oAttachment.FileName, oAttachment.FileName)
    lvItem.SubItems(1) = oAttachment.Size
Next

txtBody = m_colMessages(Item.Key).MessageBody

End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -