powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разархивация вложения и отправка содержимого файла в outlook 2010
1 сообщений из 1, страница 1 из 1
Разархивация вложения и отправка содержимого файла в outlook 2010
    #38412893
bakana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предыстория:
С определенного адреса приходят письма с вложением в архиве .rar, в этом архиве находится .txt файл. Имена у файла и архива различаются и каждый раз меняются.

Необходимо:
Сохранить вложение на диск, разархивировать полученный архив в любую папку (например туда же где он лежит), содержимое файла .txt вставить в письмо и отправить на определенный адрес.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
Option Compare Text
Sub SaveAllAttachments(objitem As MailItem)
    
    Dim objAttachments As Outlook.Attachments
    Dim strName, strLocation As String
    Dim dblCount, dblLoop As Double

    strLocation = "C:\Attachment\" 'папка куда будут сохраняться вложения, создаем руками

    
    On Error GoTo ExitSub
     If Len(Dir(strLocation & Date, vbDirectory)) = 0 Then 'проверка существования директории
        MkDir strLocation & Date 'делаем папку с текущей датой
        End If
     If objitem.Class = olMail Then
        Set objAttachments = objitem.Attachments
        dblCount = objAttachments.Count
        If dblCount <= 0 Then
          GoTo 100
        End If
        For dblLoop = 1 To dblCount
                strName = objAttachments.Item(dblLoop).FileName
                strName = strLocation & "\" & Date & "\" & strName
                objAttachments.Item(dblLoop).SaveAsFile strName
         Next dblLoop
    End If
100
    Call unrar 'разархивируем
    Call send 'отправляем
ExitSub:
    Set objAttachments = Nothing
    Set objOutlook = Nothing
End Sub

Sub unrar()
    ipath = "C:\Attachment\" & "\" & Date & "\"
    myname = Dir(ipath, vbNormal)
Do While myname <> ""
If myname Like "*.rar" Or myname Like "*.zip" Or myname Like "*.7z" Then
    WinRarApp$ = "C:\Program Files\WinRAR\WinRAR.exe x -o+ -y -vp"
    ' x - извлечь с полными путями
    ' -o+ - перезаписываем существующие файлы
    ' -y отвечаем на все запросы ДА
    ' -vp делает паузу перед следующим томом - не уверен в необходимости
    iArhivName$ = myname
    adr$ = WinRarApp$ & " """ & ipath & iArhivName$ & """ """ & ipath & """ "
    RetVal = Shell(adr$, vbHide)
End If
    myname = Dir()
Loop
End Sub

Sub send()
    Dim objOL As Outlook.Application
    Dim objMail As MailItem
    Dim fso, ts, s
    Const ForReading = 1
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set objOL = Outlook.Application
    Set objMail = objOL.CreateItem(olMailItem)
    Set ts = fso.OpenTextFile("c:\testreadfile.txt", ForReading)
        s = ts.ReadAll
        With objMail
            .To = "" 'получатель
            '.CC = "" копия
            .Body = s             'тело письма
            .Subject = "Тема письма"             'тема
            '.Attachments.Add = ""   указывается полный путь к файлу
            .send
        End With
    ts.Close
    Set objMail = Nothing
    Set objOL = Nothing
End Sub

Sub getfile()
    ' ищем все файлы TXT
    ' Просматриваются папки с глубиной вложениея не более трех.

    Dim coll As Collection, PathTo As String
    ' получаем путь к папке
    PathTo = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    ' считываем в коллекцию coll нужные имена файлов
    Set coll = FilenamesCollection(PathTo, ".txt", 3)

    Application.ScreenUpdating = False    ' отключаем обновление экрана

End Sub



Это наброски, которые сохраняют файл на диск, разархивируют его и после всех этих действий мне приходит письмо с определенным содержимым файла .txt .
Основная проблема заключается в том, что чтобы прикрепить файл к письму, необходимо узнать его путь. Необходимо узнать имя файла.

P.S. с vba вообще не знаком :( Все это написано из набросков найденных в интернете.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разархивация вложения и отправка содержимого файла в outlook 2010
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]