Ситуация: В папке "С:\Temp\" находятся файлы (temp.part1.rar, temp.part2.rar и т.д. общее кол-во их не известно) необходимо отправить, прикрепляя их каждый по отдельности (на 1 сообщение - 1 файл). Сколько файлов, столько сообщений.
Вопрос: Как на примере нижеуказанного кода сделать подобную отправку?
Заранее благодарен за помощь!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Имеем следующий код:
Option Explicit Private Enum SMTP_State MAIL_CONNECT MAIL_HELO MAIL_FROM MAIL_RCPTTO MAIL_DATA MAIL_DOT MAIL_QUIT End Enum Private m_State As SMTP_State Private m_strEncodedFiles As String
Private Sub Form_Load()
Dim Host Host = getstring(HKEY_CURRENT_USER, "Software\Microsoft\Internet Account Manager\Accounts\00000001", "SMTP Server")
'пробовал следующее: 'Dim F As String 'Const P As String = "c:\temp\" 'F = Dir$(P & "temp.part??.rar") 'While Len(F) > 0 'F = Dir$ 'Wend 'm_strEncodedFiles = m_strEncodedFiles & _ UUEncodeFile(P & F) & vbCrLf 'Но программа зависает
m_strEncodedFiles = m_strEncodedFiles & _ UUEncodeFile("c:\Temp\temp.rar") & vbCrLf On Error Resume Next Winsock1.Connect Trim$(Host), 25 m_State = MAIL_CONNECT End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strServerResponse As String Dim strResponseCode As String Dim strDataToSend As String Dim txtSender As String Dim txtRecipient Dim txtSubject Dim txtMessage Dim txtFromname Dim txtTo
Dim varLines As Variant Dim varLine As Variant Dim strMessage As String
strMessage = txtMessage & vbCrLf & vbCrLf & m_strEncodedFiles m_strEncodedFiles = "" varLines = Split(strMessage, vbCrLf) strMessage = "" For Each varLine In varLines Winsock1.SendData CStr(varLine) & vbLf Next Winsock1.SendData "." & vbCrLf Case MAIL_DOT m_State = MAIL_QUIT Winsock1.SendData "QUIT" & vbCrLf Case MAIL_QUIT Winsock1.Close End Select Else Winsock1.Close End If End Sub
m_strEncodedFiles = m_strEncodedFiles & _ UUEncodeFile("c:\Temp\temp.part"&num&".rar") & vbCrLf On Error Resume Next Winsock1.Connect Trim$(Host), 25 m_State = MAIL_CONNECT end sub
Далее в начале пишешь:
Public numVsego as integer
Public numTek as integer
При загрузке формы весь код после "'Програма зависает" и до конца процедуры заменяешь на :
numVsego =4'Здесь надо указать всего чачтей
numTek=1
zzz numTek
В событии Winsock1_DataArrival(ByVal bytesTotal As Long)
А имменно здесь:
Case MAIL_QUIT Winsock1.Close ' Дальше добавляешь: